【问题标题】:Within robot framework find an xpath within an element variable在机器人框架内找到元素变量中的 xpath
【发布时间】:2021-11-22 00:34:45
【问题描述】:

我目前遇到一种情况,我需要获取页面上的所有元素,逐个遍历元素并在每个元素内,我想查看是否存在某个其他元素。

为了更清楚,这是我的循环:

${elements} =   Get WebElements  //li[@class='product-item--row js_item_root ']
FOR  ${item}  IN  @{elements}
    
    This is the part where I need to check within ${item} if the xpath exists: 
    //*[contains(text(), '${companyname}')]

END   

所以基本上,我的页面上有 24 个元素具有 xpath

//li[@class='product-item--row js_item_root ']

我的页面上有 1 个元素可以通过 xpath 定位

//li[@class='product-item--row js_item_root ']//*[contains(text(), '${companyname}')]

我想知道,在这 24 个元素中,元素所在的位置包含了哪些

//*[contains(text(), '${companyname}')]

希望有人能提供帮助!

编辑

这不起作用:

Element should be visible  ${item}//*[contains(text(), 'BargainsKing')]

那是因为:

Element with locator '<selenium.webdriver.remote.webelement.WebElement (session="4b40581d8835aac628e3a2032e355ee5", element="663438f7-76eb-4801-b255-021a865035dd")>//*[contains(text(), 'BargainsKing')]' not found.

编辑

我找到了

${item.get_attribute('innerHTML')}

现在我的下一个/最后一个问题是,我可以在这个 innerHTML 中查找一个 xpath 吗?

【问题讨论】:

    标签: xpath robotframework


    【解决方案1】:

    解决方法是统计元素个数,然后用 FOR 循环所有元素

    ${count}    Get Element Count    XmlLocatorForAllElements
    FOR    ${i}    IN RANGE    1        ${count}
        ${tmpElement}    Get Element Count    XmlLocator[${i}]/WithCompany
        IF    ${tmpElement} > ${0}
            #element found
        END
    END
    

    【讨论】:

    • 虽然这是真的,但感谢您的注意,我将如何获得该元素的 xpath?这是主要的退出标准。当我找到我的元素时,我想与那个元素进行交互:-)
    • 好的,我明白你想要什么。您需要获取元素计数,然后循环 x 次,直到找到匹配项。我会编辑回复
    【解决方案2】:

    您能否提供有关选择器的更多详细信息? 现在,我认为你应该试试这个:

    • 您可以在选择器中检查是否有任何增量值
    • 如果没有,则为每一行添加一个计数器
    • 要选择特定列,您可以使用 Xpath 中的计数器或公司名称

    【讨论】:

    • 我理解添加增量值的概念。因此,查看它是哪个“数字”将不是问题。我的问题更集中在如何在机器人框架中的元素变量中找到 xpath
    猜你喜欢
    • 2015-11-11
    • 2014-09-29
    • 2016-05-07
    • 1970-01-01
    • 2021-03-01
    • 2019-10-25
    • 2018-08-16
    • 2020-12-16
    • 2018-12-04
    相关资源
    最近更新 更多