我们可以在xpath中使用:position()来修改简单 HTML块中的第n个元素,如下所示: <ul><li>first</li><li>second</li><li>third</l
... . . 我们可以在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,即使在使用其他标签装饰munth-elements时也能正常工作.
我知道出于测试目的,我可以更改后端逻辑以在html中提供额外的测试句柄,例如data- *属性,但是假设我无法更改测试中的app代码.
所以,我正在搜索XPath查询,例如:“给我第三个< li>元素,无论它放在指定的页面(或页面块)中,即使它是多次嵌套的”
.解决方法
. 请注意,[position()= 3]可以缩短为[3].那么你的问题的答案是
(//li)[3]
该位置与括号返回的节点列表有关.
. . .. ...