我想从当前页面获取所有子元素,因为我正在使用下面的代码
IJob
上面的代码引发错误No关键字,名称为'Get Child WebElement'
还有其他库可以工作吗?
答案 0 :(得分:2)
您已经发现这些关键字尚未在已发布的SeleniumLibrary版本中。
如果您正在处理元素或仅具有字符串定位符,则可以在自定义SeleniumLibrary扩展名中@yash答案中提到的SelenniumLibrary Pull Request #702中使用建议的代码。
在下面的示例中,有两个自定义的Robot Framework关键字,它们使用#702中提到的方法为您提供关键字:
在以下示例中,它显示您可以使用常规定位符id=main
或WebElement ${children[0]}
查找父级和子级。这是由find_element(s)
python对象的python方法WebElement
处理的。
注意:出于安全性和可读性考虑,将关键字从Evaluate
更改为Call Method
。
example.robot
*** Settings ***
Library SeleniumLibrary
Suite Teardown Close All Browsers
*** Test Cases ***
Get Children Then Parent
Open Browser http://www.google.com headlesschrome
${children} Get Child Webelements id=main
${parent} Get Parent Webelement ${children[0]}
${id} Get Element Attribute ${parent} id
Should Be Equal ${id} main
*** Keywords ***
Get Child Webelements
[Arguments] ${locator}
${element} Get WebElement ${locator}
${children} Call Method
... ${element}
... find_elements
... by=xpath value=child::*
[Return] ${children}
Get Parent Webelement
[Arguments] ${locator}
${element} Get WebElement ${locator}
${parent} Call Method
... ${element}
... find_element
... by=xpath value=parent::*
[Return] ${parent}
答案 1 :(得分:0)
为此提出了PR #702。关于这一点,正在进行一些讨论。 由于目前尚无任何ETA /结论。同时,您可以通过标识符控制所有内容。
就像您想要子元素一样,您的标识符将是:-
In case of css:- <<parent identifier > child >>
In case of xpath:- <<parent identifier/child>>
使用此方法存在局限性,因为您不能有2种不同的选择器类型作为父/子。