【问题标题】:Robotframework Create LOOP TO FIND ElementRobotframework 创建循环查找元素
【发布时间】:2020-03-20 21:40:30
【问题描述】:
${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

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

【问题讨论】:

  • 能否分享您的错误信息?此外,您不需要迭代 ${i} Robotframework 为您使用循环本身
  • “在这里失败” 是什么意思?它是如何失败的,“这里”在哪里?

标签: python robotframework


【解决方案1】:

一个问题是语法。您不需要在每一行都使用\,您需要添加END 语句。此外,您不需要初始化或增加 ${i},机器人会在您使用 FOR 循环时自动执行此操作。

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。状态只会是“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 语句,因此它可能会一遍又一遍地找到相同的元素。

我不知道您的应用程序是什么样的,但也许您需要在 xpath 中使用 ${i}

Element Text Should Be    xpath=//android.view.View[@index='${i}']//android.view.View[@text='Wiki']

【讨论】:

    猜你喜欢
    • 2017-12-30
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多