基本上我正在搜索可用于选择共享相同名称,属性和属性的元素的语法。
我想通过索引选择它们。 (不幸的是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]
。
{{1}}
有没有办法通过索引选择它们?
答案 0 :(得分: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]
请参阅此related question