首页 > 解决方案 > 一旦在 Robot 框架中单击按钮,验证按钮是否存在就会失败

问题描述

在 Robotframework 中,“Click Button”关键字确实会单击按钮,但是当检查该按钮是否不再存在并被单击时,有时会进行额外检查(例如 Page Should Not Contain 或 Element Should Not Be Visible )失败或者脚本找不到单击它的按钮。

我试过的:

  1. For循环单击按钮-下面的代码
  2. 等到关键字 - 下面的代码
  3. 使用 Javascript 的点击元素

问题是 5 次中的 1 次间歇性失败。我该如何处理这个问题?

//代码示例 2种不同的方式点击按钮

  1.
       Wait Until Page Contains Element ${BTN_BET} 60s
       Double Click Element ${BTN_BET}
       FOR ${INDEX} IN RANGE 100
       ${CHECK}= Run Keyword And Return Status Page Should Contain Element ${BTN_BET}
       Run Keyword If '${CHECK}' == "True" Double Click Element ${BTN_BET}
       Run Keyword If '${CHECK}' == "False" Exit For Loop
       END
       Page Should Contain
      ... You clicked the button

  2.

    Wait Until Keyword Succeeds 60s 0.5s Page Should Contain Element ${BTN_BET}
    Sleep 2s
    Wait Until Keyword Succeeds 30s 0.5s Execute JavaScript document.evaluate             
    ('${BTN_BET}',document.body,null,9,null).singleNodeValue.click()
    Sleep 5s
    Wait Until Page Contains Element //div[@class='results-warning' and .='Wait 
    for another stage'] 40s
    Page Should Contain
    ... You clicked the button

标签: seleniumrobotframework

解决方案


所以,我找到了解决我问题的好决定。我以这种方式重写了 FOR 循环

FOR ${INDEX} IN RANGE 20
    ${BET_BUTTON_NOT_PRESSED} = Run Keyword And Return Status Page Should Contain Element ${BTN_BET}
    Run Keyword If '${BET_BUTTON_NOT_PRESSED}' == "True" Click Button ${BTN_BET}
    Sleep 1s
    Continue For Loop If ${BET_BUTTON_NOT_PRESSED} == "False"
END

问题出在按钮上,它并没有立即消失,但是当我在循环中添加“Sleep 1s”时 - 10 次尝试中的 10 次通过了。我认为问题本身是javascript加载太慢。


推荐阅读