2

基本上,我正在寻找一种可以用来选择具有相同名称、属性和属性的元素的语法。

我正在考虑通过 Index 选择它们。(不幸的是,Xpath 不能工作,因为它是一个动态元素。)

所以,我有一个页面,其中元素Add显示两次,它们都添加/抛出不同的值。但它们都具有相同的 ID、属性和名称。在我的测试中,我需要选择第一个Add,然后是另一个。

${add attributes row}          //*[@data-bind="click: function() { 
$parents[1].addItem($parents[1]
    .attributes()[$parentContext.$index()]) }", index=1]


${add attributes row_2}     //*[@data-bind="click: function() { 
$parents[1].addItem($parents[1]
    .attributes()[$parentContext.$index()]) }", index=2]

有没有办法按索引选择它们?

4

1 回答 1

2

如果您找到一个同时选择它们的 XPath,则可以通过将 XPath 放在括号中来将谓词应用于整个 XPath。例如, //a 选择整个 DOM 中的所有锚点。(//a)[4] 选择在 DOM 中找到的第 4 个锚点。您还可以使用 last 和 position 函数来选择相对索引,例如倒数第二个锚点 (//a)[last()-1]

第一次尝试这样的定位器:

xpath=(//*[@data-bind="click: function() {$parents[1].addItem($parents[1].attributes()[$parentContext.$index()]) }"])[1]

第二次尝试这样的定位器:

xpath=(//*[@data-bind="click: function() {$parents[1].addItem($parents[1].attributes()[$parentContext.$index()]) }"])[2]

请参阅此相关问题

于 2013-10-01T20:15:58.290 回答