Robotframework Create L OOP НАЙТИ элемент - PullRequest
0 голосов
/ 20 марта 2020
${i}=    Set Variable    0
FOR    ${i}    IN RANGE    0    20
\    Test Scroll
\    Element Text Should Be    xpath=//android.view.View[@index='0']//android.view.View[@text='Wiki']
\    ${Additional_pack_th}=    Get Text    xpath=//android.view.View[@text='Wiki']
\    ${status}    Run Keyword And Return Status    BuiltIn.Should Be Equal As Strings    ${Additional_pack_th}    Wiki
\    BuiltIn.Exit For Loop If    ${status} == TRUE
\    BuiltIn.Continue For Loop If    ${status} == False
${i}=    BuiltIn.Evaluate    ${i}+1

Это правильный путь? Мой сбой здесь не удается ... Пожалуйста, помогите!

1 Ответ

0 голосов
/ 20 марта 2020

Одной из проблем является синтаксис. Вам не нужно \ в каждой строке, и вам нужно добавить оператор END. Кроме того, вам не нужно инициализировать или увеличивать ${i}, робот делает это автоматически, когда вы используете FOR l oop.

FOR    ${i}    IN RANGE    0    20
    Test Scroll
    Element Text Should Be    xpath=//android.view.View[@index='0']//android.view.View[@text='Wiki']
    ${Additional_pack_th}=    Get Text    xpath=//android.view.View[@text='Wiki']
    ${status}    Run Keyword And Return Status    BuiltIn.Should Be Equal As Strings    ${Additional_pack_th}    Wiki
    BuiltIn.Exit For Loop If    ${status} == TRUE
    BuiltIn.Continue For Loop If    ${status} == False
END

Кроме того, это не правильно:

${status} == TRUE

После замены ${status} на его значение, результатом должно быть правильное выражение python. Голое слово TRUE не известно python. Статус будет всегда «PASS» или «FAIL», поэтому вам нужно проверить одно из этих значений. И, наконец, вам не нужно ставить перед встроенными ключевыми словами BuiltIn..

Таким образом, выражение должно выглядеть следующим образом:

Exit For Loop If    '${status}' == 'TRUE'

Вам не нужен вызов Continue For loop if, так как продолжение по умолчанию это то, что он будет делать. Вам нужно использовать «продолжить», только если вы хотите пропустить некоторые ключевые слова и начать следующую итерацию. Вы не пропускаете ни одного ключевого слова, поэтому оно совершенно не нужно.

Окончательная версия должна выглядеть следующим образом:

FOR    ${i}    IN RANGE    0    20
    Test Scroll
    Element Text Should Be    xpath=//android.view.View[@index='0']//android.view.View[@text='Wiki']
    ${Additional_pack_th}=    Get Text    xpath=//android.view.View[@text='Wiki']
    ${status}    Run Keyword And Return Status    BuiltIn.Should Be Equal As Strings    ${Additional_pack_th}    Wiki
    Exit For Loop If    '${status}' == 'TRUE'
END

Однако , все это сказано, Я не уверен, что это сработает. Это зависит от того, что делает Test Scroll. Поскольку вы никогда не меняете оператор xpath на каждой итерации, он, вероятно, будет снова и снова находить один и тот же элемент.

Я не знаю, как выглядит ваше приложение, но, возможно, вам нужно использовать ${i} в вашем xpath:

Element Text Should Be    xpath=//android.view.View[@index='${i}']//android.view.View[@text='Wiki']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...