在机器人框架内找到元素变量中的 xpath

Posted

技术标签:

【中文标题】在机器人框架内找到元素变量中的 xpath【英文标题】:Within robot framework find an xpath within an element variable 【发布时间】: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 吗?

【问题讨论】:

【参考方案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

以上是关于在机器人框架内找到元素变量中的 xpath的主要内容,如果未能解决你的问题,请参考以下文章

如何在画布内定位元素以进行机器人框架自动化测试?

将 Xpath 转换为列表变量并使用 For 循环

对于Selenium机器人框架中的循环

Robotframework:未找到变量 $CUSTOM_VARIABLE

Spider-scrapy 中的 xpath 语法与调试

如何使用机器人框架和 python 在不滚动的情况下获取所有匹配的元素?