Robotframework按索引选择元素

时间:2013-10-01 19:10:04

标签: indexing element selenium-webdriver robotframework

基本上我正在搜索可用于选择共享相同名称,属性和属性的元素的语法。

我想通过索引选择它们。 (不幸的是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}}

有没有办法通过索引选择它们?

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