Как изменить селектор каждый раз, когда цикл выполняется? - PullRequest
0 голосов
/ 15 ноября 2018

В моем следующем скрипте я хочу изменять значение переменной ${drop_down_items} каждый раз, когда выполняется цикл.

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

В приведенном выше локаторе я хочу увеличивать значение nth-child с 2 до 3, с 3 до 4 и так далее каждый раз, когда выполняется цикл.

*** Variables ***
${combo_boxes}      css=div.col > div:nth-child(1) > div:nth-child(3) > div:nth-child(1) > combo-box:nth-child(1) > div:nth-child(1)
${drop_down_items}  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
*** Keywords ***
Loop
  @{combo_boxes}=  Get WebElements  ${combo_boxes}
  :FOR    ${each}     IN      @{combo_boxes}
  \  Click Element  ${each}
  \  Loop A
  \  Sleep  0.5s
  \  Click Element  ${each}

Loop A
  @{get_role_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      @{get_role_list}
  \    Sleep  0.5s
  \    Click Element  ${each}
  \    Sleep  0.5s
  \    Run Keyword If  '${each}'!='EXIT'  Click Element  ${combo_boxes}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018
Loop
  @{combo_boxes}=  Get WebElements  ${combo_boxes}
  ${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

Решение состоит в том, чтобы добавить еще один слой цикла. В Руководстве по Robot Framework есть раздел, посвященный различным функциям зацикливания, которые предлагает Robot Framework. В частности, есть петля в секции For-in-range . Это пример, который должен помочь с вашей проблемой.

*** Test Cases ***
Only upper limit
    [Documentation]    Loops over values from 0 to 9
    :FOR    ${index}    IN RANGE    10
    \    Log    ${index}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...