【问题标题】:Verification of button's presence fails once button is clicked in Robot framework一旦在 Robot 框架中单击按钮,验证按钮是否存在就会失败
【发布时间】:2021-05-20 14:51:32
【问题描述】:

在 Robotframework 中,“Click Button”关键字确实会单击按钮,但是当检查该按钮是否不再存在并且是否已被单击时,有时会进行额外检查(例如“页面不应包含”或“元素不应可见” ) 失败或脚本找不到点击它的按钮。

我尝试过的:

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

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

//代码示例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

【问题讨论】:

  • 显示元素 html 的样子。不要添加html代码的截图

标签: selenium robotframework


【解决方案1】:

所以,我找到了解决我问题的好决定。我用这种方式重写了 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加载太慢。

【讨论】:

  • 感谢您回来回答。您将能够在 24 小时左右后使用“打勾”标记来接受自己的答案。
猜你喜欢
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 2023-04-02
  • 2014-04-13
  • 2018-07-01
  • 1970-01-01
相关资源
最近更新 更多