在机器人框架内找到元素变量中的 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的主要内容,如果未能解决你的问题,请参考以下文章