使用For循环检查状态

时间:2017-06-19 10:42:29

标签: robotframework

我正在尝试编写一个检查页面状态的测试套件。状态显示为文本。要查看任何状态更改,首先需要刷新页面。通常情况下,状态变化会在一分钟内发生。

因此,如果手动完成,我将不得不:

  1. 登陆页面
  2. 检查状态是否显示
  3. 检查显示的状态是否为“Good to go”:
    • 如果是“Good to go”,请继续进行任何进一步的行动
    • 如果是其他任何内容,请重新加载页面,直到状态为“Good to go”
  4. 两个半工作的例子是:

    1. 如果我登陆页面时状态为“Good to go”,则效果很好。如果不是,则页面重新加载10次,如果状态在此期间变为“Good to go”,则忽略它并继续重新加载页面。

      ${Status}  Get Text  xpath=//*[@id="status"]
      :FOR    ${CheckStatus}    IN RANGE  10
      \   ${StatusVisible}  Run Keyword And Return Status  Page Should Contain Element  ${Status}
      \   Run Keyword If  '${Status}'=='Good to go'  Exit For Loop  ELSE  Reload Page
      
    2. 运行时会返回此错误:

    3.   

      关键字'BuiltIn.Continue For Loop如果'预期1参数,得到2

          ${Status}  Get Text  xpath=//*[@id="status"]
          :FOR    ${CheckStatus}    IN RANGE  10
          \   ${StatusVisible}  Run Keyword And Return Status  Page Should Contain Element  ${Status}
          \   Continue For Loop If  '${Status}'!=='Good to go'  Reload Page
          \   Exit For Loop If  '${Status}'=='Good to go'
      


      我真的很感激一些帮助。

2 个答案:

答案 0 :(得分:2)

Continue For Loop If只接受一个参数,但您提供了2。

如果必须重新加载页面以检查状态是否已更改为所需状态,则可以执行以下操作:

:FOR    ${CheckStatus}    IN RANGE    10
\    ${Status}    Get Text    xpath=//*[@id="status"]
\    Page Should Contain    ${Status}    # Check that the element exists
\    Exit For Loop If    '${Status}'=='Good to go'    # Break out of loop if status is expected value
\    Run Keyword    Reload Page    # Otherwise, reload and loop again

答案 1 :(得分:0)

在第二个示例中,关键字“Continue For Loop If”应该只包含一个参数。您应该删除“重新加载页面”。这就是你得到那个错误的原因

-g