Robotframework创建LOOP TO FIND元素

问题描述 投票:0回答:1
${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

这是正确的方法吗?我的执行在这里失败...请帮助!

java python robotframework
1个回答
0
投票

一个问题是语法。您无需在每一行上都使用\,并且需要添加END语句。另外,您不需要初始化或递增${i},当您使用FOR循环时,robot会自动执行。

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表达式。 python不知道裸词TRUE。状态永远只有“通过”或“失败”,因此您需要检查其中一个值。最后,您不需要在内置关键字前面加上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语句,因此它可能会一遍又一遍地找到相同的元素。

© www.soinside.com 2019 - 2024. All rights reserved.