2012-03-25 12 views
12
<p class="small" style="margin: 16px 4px 8px;"> 
<b> 
<a class="menu-root" href="#pg-jump">Pages</a> 
: 
<b>1</b> 
, 
<a class="pg" href="viewforum.php?f=941&start=50">2</a> 
, 
<a class="pg" href="viewforum.php?f=941&start=100">3</a> 
... 
<a class="pg" href="viewforum.php?f=941&start=8400">169</a> 
, 
<a class="pg" href="viewforum.php?f=941&start=8450">170</a> 
, 
<a class="pg" href="viewforum.php?f=941&start=8500">171</a> 
<a class="pg" href="viewforum.php?f=941&start=50">Next.</a> 
</b> 
</p> 

chcę złapać a elementu zawierającego 171. Więc w zasadzie elementu poprzedzającego od następnego.Jak uzyskać poprzedni element?

//a[.='Next.']//Not sure how to use preceding here 

Odpowiedz

26

Można to wykorzystać xpath:

//a[.="Next."]/preceding::a[1] 

Gdybym diagram go, używając X do reprezentowania bieżącej lokalizacji, to będzie wyglądać następująco:

------------------+------+------------------ 
preceding-sibling | self | following-sibling 
------------------|------|------------------ 
last() ... 2 1 | X | 1 2 ... last() 
------------------+------+------------------ 
+0

Ten schemat jest tak przydatny! Przez tak długi czas byłem zdezorientowany regułami indeksowania! – Skywalker326

1

Wiem, że to jest stare i jeśli nie znasz elementu zawierającego poprzedzającego "Nazwa". element ten nie byłby rozwiązaniem dla ciebie. ALE, jeśli chcesz znaleźć dokładnie ten element i na stronie jest kilka elementów "171". Sposób na odróżnienie go od reszty, można użyć następujących.

//p[b[contains(., 'Next.')]]//a[contains(., '171')] 
3
//a[contains(text(), 'Next.')]/preceding::a[contains(text(), '171')] 

Wyjaśnienie XPath: Korzystanie text metodę wraz z <a> tagu, a następnie przejść do przodu z preceding słowo kluczowe aby zlokalizować elementowi 171

Powiązane problemy