【问题标题】:Robotframework selecting an element by indexRobotframework 按索引选择元素
【发布时间】:2013-10-08 01:47:08
【问题描述】:

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

我正在考虑通过 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]

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

【问题讨论】:

    标签: indexing element selenium-webdriver robotframework


    【解决方案1】:

    如果您找到一个同时选择它们的 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

    【讨论】:

    • 谢谢。好东西。这就是我正在寻找的确切答案。
    猜你喜欢
    • 2012-12-28
    • 2011-04-19
    • 2022-11-24
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多