selenium - 一旦在 Robot 框架中单击按钮,验证按钮是否存在就会失败
问题描述
在 Robotframework 中,“Click Button”关键字确实会单击按钮,但是当检查该按钮是否不再存在并被单击时,有时会进行额外检查(例如 Page Should Not Contain 或 Element Should Not Be Visible )失败或者脚本找不到单击它的按钮。
我试过的:
- For循环单击按钮-下面的代码
- 等到关键字 - 下面的代码
- 使用 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
解决方案
所以,我找到了解决我问题的好决定。我以这种方式重写了 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加载太慢。
推荐阅读
- javascript - 如何让 HOC 对覆盖道具做出反应?
- google-apps-script - 存档脚本随机停止处理工作表上已填充的数据
- anaconda - Azure ML 无法创建 conda 环境(退出代码:-15)
- tailwind-css - Tailwind 不会吹扫
- angular - 未在角度 11 中调用事件发射器函数
- api - 任何注册为亚马逊产品广告 API 5.0 开发人员的方式
- youtube - youtube如何将其横幅照片保存在频道上,以免被下载
- powershell - PowerShell 输出到多个文件
- r - 错误 chol():调用 PMR::PMR_summary_Egger() 时分解失败
- ios - “com.apple.developer.pushkit.unrestricted-voip”如何在 xcode 12.5 中添加此密钥