2012-03-25 50 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> 

我想趕上a元素包含171.所以基本上來自Next的前一個元素。如何獲得前面的元素?

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

回答

26

您可以使用此xpath

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

如果我是來圖出來,使用X表示當前位置,它應該是這樣的:

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

此圖是非常有用!索引規則讓我很困惑! – Skywalker326 2016-08-11 05:32:39

1

我知道這是舊的,如果你不知道「名稱」前的包含元素。元素這不會是你的解決方案。但是,如果您想要查找完全相同的元素,並且整個頁面上有幾個「171」元素。 將其與其他區分開來的方法可以使用以下方法。

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

說明的XPath:使用text<a>標籤一起,然後用preceding關鍵字前進定位元素171