Python 2.7 没有名称为';获取子WebElement';在机器人中发现
我想从当前页面获取所有子元素,因为我正在使用下面的代码Python 2.7 没有名称为';获取子WebElement';在机器人中发现,python-2.7,robotframework,Python 2.7,Robotframework,我想从当前页面获取所有子元素,因为我正在使用下面的代码 ${childElements} = Get Child WebElement xpath=//* 上面的代码抛出一个错误,没有名为“Get Child WebElement”的关键字 是否有其他库可以使用此功能?也提出了同样的问题。围绕这一点正在进行一些讨论。 因为目前还没有关于这方面的任何预计到达时间/结论。同时,您可以从标识符控制所有内容 如果您想要子元素,您的标识符将是:- 如果是css:-> 对于xpath:- 使用这种
${childElements} = Get Child WebElement xpath=//*
上面的代码抛出一个错误,没有名为“Get Child WebElement”的关键字
是否有其他库可以使用此功能?也提出了同样的问题。围绕这一点正在进行一些讨论。
因为目前还没有关于这方面的任何预计到达时间/结论。同时,您可以从标识符控制所有内容
如果您想要子元素,您的标识符将是:-如果是css:->
对于xpath:-
使用这种方法有一个限制,即不能将两种不同的选择器类型作为父/子选择器 对于相同的问题,有人提出了质疑。围绕这一点正在进行一些讨论。
因为目前还没有关于这方面的任何预计到达时间/结论。同时,您可以从标识符控制所有内容
如果您想要子元素,您的标识符将是:-如果是css:->
对于xpath:-
使用这种方法有一个限制,即不能将两种不同的选择器类型作为父/子选择器 您已经了解到,这些关键字尚未出现在已发布的SeleniumLibrary版本中 如果您正在处理一个元素或只是有一个字符串定位器,那么您可以在自定义SeleniumLibrary扩展中使用@yash的答案中提到的SeleniumLibrary Pull请求中的建议代码 在下面的示例中,有两个自定义Robot Framework关键字可以使用#702中提到的方法为您提供关键字:
id=main
或Web元素${children[0]}
查找父项和子项。这由WebElement
python对象的python方法find_元素
处理
注意:出于安全原因和可读性,将关键字从Evaluate
更改为callmethod
机器人示例
*** 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}
正如您已经了解到的,这些关键字尚未出现在已发布的SeleniumLibrary版本中 如果您正在处理一个元素或只是有一个字符串定位器,那么您可以在自定义SeleniumLibrary扩展中使用@yash的答案中提到的SeleniumLibrary Pull请求中的建议代码 在下面的示例中,有两个自定义Robot Framework关键字可以使用#702中提到的方法为您提供关键字:
id=main
或Web元素${children[0]}
查找父项和子项。这由WebElement
python对象的python方法find_元素
处理
注意:出于安全原因和可读性,将关键字从Evaluate
更改为callmethod
机器人示例
*** 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}
谢谢你的回复。这部分符合我的期望。我希望遍历子元素的末尾。对于ex Head 1Head 2Head 3 Row 1 Text 1Text 2Text 3 Row 2 Text 1Text 2Text 3,我想得到0=>Head 1=>Head 2 n=>Text 3是否有这样做的方法?这些不是父级
的直接子级,因此不会由这些关键字返回。如果要返回包含这些记录的列表,请使用Get Webelements//table[@id='SomeId']//tr/td |//tr/th
我希望从div中获取所有子项。例如,div Span 1div Span 2Inner Span 11 div Span 3Inner Span 21Inner Span 22,该列表类似于0=>div Span 1,1=>div Span 2,2=>div Span 11,3=> div跨度3, 4=div跨度21, 5=div跨度22,这个例子/问题与前面的例子不一致,我考虑一个单独的问题。而且,这些例子应该是问题的一部分。你可以问一个问题来补充这些细节。否则,关键的信息会分散在评论中不属于它们的地方。谢谢,我现在就发布新问题。谢谢你们的回复。这部分符合我的期望。我希望遍历子元素的末尾。对于ex Head 1Head 2Head 3 Row 1 Text 1Text 2Text 3 Row 2 Text 1Text 2Text 3,我想得到0=>Head 1=>Head 2 n=>Text 3是否有这样做的方法?这些不是父级
的直接子级,因此不会由这些关键字返回。如果要返回包含这些记录的列表,请使用Get Webelements//table[@id='SomeId']//tr/td |//tr/th
我希望从div中获取所有子项。例如,div Span 1div Span 2Inner Span 11 div Span 3Inner Span 21Inner Span 22,该列表类似于0=>div Span 1,1=>div Span 2,2=>div Span 11,3=> div跨度3, 4=div跨度21, 5=div跨度22,这个例子/问题与前面的例子不一致,我考虑一个单独的问题。而且,这些例子应该是问题的一部分。你可以问一个问题来补充这些细节。否则,关键的信息会分散在评论中不属于它们的地方。谢谢,我现在就发布新问题。