如何使用多级嵌套选择XPath中的第n个元素
我们可以在xpath中使用:position()检索简单HTML块中的第n个元素,如下所示:如何使用多级嵌套选择XPath中的第n个元素,xpath,selector,css-selectors,Xpath,Selector,Css Selectors,我们可以在xpath中使用:position()检索简单HTML块中的第n个元素,如下所示: <ul> <li>first</li> <li>second</li> <li>third</li> </ul> 我们必须使用//b[position()=2]/li 问题在于,我想为selenium测试的第n个元素创建一个XPath规则,该规则不会与去关联标记紧密耦合。我需要一个XPath,即使在多个元素
<ul>
<li>first</li>
<li>second</li>
<li>third</li>
</ul>
我们必须使用//b[position()=2]/li
问题在于,我想为selenium测试的第n个元素创建一个XPath规则,该规则不会与去关联标记紧密耦合。我需要一个XPath,即使在多个元素用附加标记修饰时也能工作
我知道,出于测试目的,我可以更改后端逻辑,以提供类似html的data-*属性的额外测试句柄,但假设我不能更改被测试应用程序的代码
因此,我正在搜索XPath查询,比如:“给我第三个
元素,不管它位于指定的页面(或页面块)中的什么位置,即使它是多重嵌套的”请注意,[position()=3]
可以缩写为[3]
。那么你的问题的答案是
(//li)[3]
该位置与括号返回的节点列表相关。是否可以是
[-1]
?@BudiMulyo:否,但您可以使用[last()]
“name'last'未定义”@BudiMulyo:您使用的是什么XPath实现?对我有用<代码>(//li)[last()]我在使用python,示例代码:chrome.find_element_by_xpath(“//div[@id='tablGroupsO\u paginate']/ul/li[8]”
<ul>
<b><li>first</li></b>
<b><li>second</li></b>
<b><li>third</li></b>
</ul>