如何获得前面的元素?

时间:2012-03-25 03:40:40

标签: xpath

<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>

我想要捕获包含171.的a元素。所以基本上是Next的前一个元素。

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

3 个答案:

答案 0 :(得分:37)

您可以使用此xpath

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

如果我要绘制图表,使用X来表示当前位置,它将如下所示:

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

答案 1 :(得分:3)

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

xpath的说明:使用text方法和<a>标记,然后使用preceding关键字找到元素171 < / p>

答案 2 :(得分:1)

我知道这是旧的,如果你不知道&#34;名称前面的包含元素。&#34;这个元素对你来说不是一个解决方案。但是,如果你想要找到那个元素并且有几个&#34; 171&#34;整个页面上的元素。  区别于其他的方法,您可以使用以下内容。

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