如何获得前面的元素?

问题描述:

<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 

您可以使用此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

我知道这是旧的,如果你不知道“名称”前的包含元素。元素这不会是你的解决方案。但是,如果您想要查找完全相同的元素,并且整个页面上有几个“171”元素。 将其与其他区分开来的方法可以使用以下方法。

//p[b[contains(., 'Next.')]]//a[contains(., '171')] 

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

说明的XPath:使用text<a>标签一起,然后用preceding关键字前进定位元素171