Как проверить, что все выпадающие элементы в 'n' количестве полей со списком кликабельны? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть веб-страница, на которой в столбце есть «n» количество полей со списком. В котором я должен убедиться, что все выпадающие элементы в каждом и каждом комбинированных полях кликабельны в итерации с использованием роботизированной среды. У меня есть мой сценарий следующим образом:

*** Keywords ***
User should be able to select each and every role suggested in the combo boxes
  @{combo_boxes}=  Get WebElements  css=div.col > div:nth-child(1) > div:nth-child(3) > div:nth-child(1) > combo-box:nth-child(1) > div:nth-child(1)
  :FOR  ${each}  IN  @{combo_boxes}
  \  Click Element  ${each}
  \  Select drop down item

Select drop down item
  @{drop_down_list}=   Get WebElements  css=div.col:nth-child(2) > div:nth-child(1) > div:nth-child(3) > div:nth-child(1) > combo-box:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div
  :FOR    ${each}     IN      @{drop_down_list}
  \  Click Element  ${each}

При выполнении вышеописанного скрипта мы получаем следующую ошибку:

WebDriverException: Message: unknown error: Element <div _ngcontent-c6="" id="divCombo" style="height: 100%; background-color: transparent;">...</div> is not clickable at point (1014, 358). Other element would receive the click: <span _ngcontent-c6="" class="flexColumnFill dropdown-optionName">...</span>
  (Session info: chrome=70.0.3538.77)
  (Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 10.0.17134 x86_64)

Sample image

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

В приведенном ниже примере список блоков выбора выбирается и затем циклически повторяется для проверки пунктов меню. Конечно, на странице есть только одно поле, но логика работает, если их было больше.

*** Settings ***
Library    SeleniumLibrary    

Suite Teardown    Close All Browsers

*** Test Cases ***
TC
    Open Browser    http://bootstrapformhelpers.com/select/   Chrome
    Maximize Browser Window

    Validate Dropdowns

*** Keywords ***
Validate Dropdowns
  @{drop_downs}=  Get WebElements  xpath://div[@data-name="selectbox1"]

  :FOR  ${each}  IN  @{drop_downs}
  \  Element Should Be Enabled    ${each}
  \  Click Element    ${each}
  \  
  \  ${name}    Get Element Attribute    ${each}     data-name
  \  Validate Dropdown Menu Items  ${name}  


Validate Dropdown Menu Items
  [Arguments]    ${dropdownname}
  @{menu_items}=  Get WebElements  xpath://div[@data-name="${dropdownname}"]//a

  :FOR  ${each}  IN  @{menu_items}
  \  Set Focus To Element    ${each}
  \  Sleep     0.2s    # Only for demo purpose.
  \  Element Should Be Visible    ${each}
  \  Element Should Be Enabled    ${each}
0 голосов
/ 16 ноября 2018
Loop
  @{combo_boxes}=  Get WebElements  css=.list > div > div:nth-child(1) > div:nth-child   (3) > div:nth-child(1) > combo-box:nth-child(1) > div:nth-child(1)
  ${INTEGER} =    Set Variable  2
  Set Suite Variable  ${INTEGER_A}  ${INTEGER}
  :FOR    ${each}     IN      @{combo_boxes}
  \  Click Element  ${each}
  \  ${roles_list}=  Set Variable    css=.list > div:nth-child(${INTEGER_A}) >  div:nth-child(1) > div:nth-child(3) > div:nth-child(1) > combo-box:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div
  \  Loop A  ${roles_list}  ${each}
  \  ${INTEGER_A}=  Evaluate    ${INTEGER_A} + 1
  \  Sleep  0.5s
  \  Click Element  ${each}


Loop A
  [Arguments]  ${roles_list}  ${combo}
  @{get_role_list}=  Get WebElements  ${roles_list}
  :FOR    ${each}     IN      @{get_role_list}
  \    Click Element "${each}"
  \    Run Keyword If  '${each}'!='EXIT'  Click Element  ${combo}
0 голосов
/ 15 ноября 2018

Судя по скриншоту, ошибка возникает из-за того, что вы щелкаете по раскрывающемуся элементу в столбце, а не по отдельным элементам в нем, верно?

Если так, то это потому, что элементы закрывают следующий выпадающий список - когда цикл заканчивается, selenium пытается щелкнуть следующий выпадающий список, но список элементов виден и находится над ним, «мешая».
После завершения отдельных элементов, просто щелкните где-нибудь еще - в пустом месте, если есть страница, и список исчезнет, ​​что позволит щелкнуть следующий выпадающий элемент управления.

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