В роботе не найдено ни одного ключевого слова с именем «Get Child WebElement» - PullRequest
0 голосов
/ 13 декабря 2018

Я хочу получить все дочерние элементы с текущей страницы, для этого я использую приведенный ниже код

${childElements} =  Get Child WebElement    xpath=//*

Приведенный выше код выдает ошибку Нет ключевого слова с именем 'Get Child WebElement'

Есть ли какая-нибудь другая библиотека для этого?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Поскольку вы выяснили, что этих ключевых слов еще нет в опубликованных версиях SeleniumLibrary.

Если вы обрабатываете элемент или просто используете локатор строк, вы можете использовать предложенный код в SelenniumLibrary.Запрос на извлечение # 702 , упомянутый в ответе @yash в пользовательском расширении SeleniumLibrary.

В приведенном ниже примере есть два пользовательских ключевых слова Robot Framework, которые дают вам ключевые слова, используя подход, упомянутый в# 702:

  1. Получить дочерние веб-элементы
  2. Получить родительские веб-элементы

В приведенном ниже примере показано, что вы можете искать родителя и ребенка с помощьюобычный локатор id=main или веб-элемент ${children[0]}.Это обрабатывается методом python find_element(s) объекта 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}  
0 голосов
/ 13 декабря 2018

Там же PR # 702 поднят для того же.Вокруг этого идет постоянная дискуссия.Так как пока нет никакого ETA / заключения по этому вопросу.Между тем вы можете контролировать все вещи с помощью вашего идентификатора.

, например, если вы хотите дочерний элемент, ваш идентификатор будет: -
In case of css:- <<parent identifier > child >>
In case of xpath:- <<parent identifier/child>>

Существует ограничениеиспользуя этот подход, вы не можете иметь 2 разных типа селектора как родительский / дочерний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...