Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 没有名称为';获取子WebElement';在机器人中发现_Python 2.7_Robotframework - Fatal编程技术网

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中提到的方法为您提供关键字:

  • 获取子Webelements
  • 获取父Webelement
  • 在下面的示例中,它显示您可以使用常规定位器
    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中提到的方法为您提供关键字:

  • 获取子Webelements
  • 获取父Webelement
  • 在下面的示例中,它显示您可以使用常规定位器
    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 1
    div 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 1
    div 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,这个例子/问题与前面的例子不一致,我考虑一个单独的问题。而且,这些例子应该是问题的一部分。你可以问一个问题来补充这些细节。否则,关键的信息会分散在评论中不属于它们的地方。谢谢,我现在就发布新问题。