如何使用多级嵌套在XPath中选择第N个元素

时间:2013-06-07 10:09:57

标签: xpath selector css-selectors

我们可以在xpath中使用:position()来修改简单HTML块中的第n个元素,如下所示:

<ul>
<li>first</li>
<li>second</li>
<li>third</li>
</ul>

我们可以按//li[position()=2]查询元素,但这不适用于这种情况:

<ul>
<b><li>first</li></b>
<b><li>second</li></b>
<b><li>third</li></b>
</ul>

我们必须使用//b[position()=2]/li

问题是我想为我的selenium测试创建一个用于nth-element的XPath规则,它不会与decoarational标签紧密结合。我需要一个XPath,即使在使用其他标签装饰muth-elements时也能正常工作。

我知道出于测试目的,我可以更改后端逻辑以在html中提供额外的测试句柄,例如data- *属性,但是假设我无法更改测试中的应用程序代码。

所以,我正在搜索XPath查询,如:“给我第三个<li>元素,无论它放在指定页面(或页面块)中,即使它是多次嵌套”

1 个答案:

答案 0 :(得分:14)

请注意,[position()=3]可缩短为[3]。你问题的答案是

(//li)[3]

该位置与括号返回的节点列表有关。