如果打开 JavaScript 弹出窗口,如何编写 Watir 条件循环以单击“确定”按钮
How can I write a Watir conditional loop to click the "OK" button if a JavaScript popup opens?
所以在某些测试用例中,我的应用程序会抛出一个JavaScript弹出窗口,指示当月不能再写字母,这会中断我的Watir自动化。
有没有办法使用 Watir 捕获 javascript 弹出窗口,然后单击"确定"按钮并继续?
这是我到目前为止所拥有的:
# Send New Letter
browser.link(:class,'new-message-button').click
browser.frame(:id,'letterText_ifr').click
javascript_dialog.button('OK').click # <= I need help here with conditional
browser.send_keys 'This is a test'
browser.button(:id,'send-button').click
browser.link(:id,'sign_out').click
如果您尝试了诸如期望JS对话框在此处并使用发送信件的代码来挽救它(如果失败)之类的事情,该怎么办?
browser.frame(:id,'letterText_ifr').click_no_wait
begin
javascript_dialog.button('OK').click # <= I need help here with conditional
rescue
browser.send_keys 'This is a test'
browser.button(:id,'send-button').click
end
browser.link(:id,'sign_out').click
它不是很优雅,但它可能会做你需要的
也许我误解了,但显而易见的答案似乎是:
javascript_dialog.button('OK').click if javascript_dialog.button('OK').exists?
如果对话框出现的时间不是随机的,而是众所周知/定义的,则可以使用以下一些时间:
until javascript_dialog.button('OK').exists? do
sleep 1
end
javascript_dialog.button('OK').click
或
sleep 1 until javascript_dialog.button('OK').exists?
javascript_dialog.button('OK').click
或
javascript_dialog.button('OK').when_present.click
或
javascript_dialog.button('OK').wait_until_present
javascript_dialog.button('OK').click
一旦我尝试点击 JavaScript 弹出窗口中的按钮,Ruby 就会失去浏览器的焦点并崩溃。
我最终只是忽略了这个错误,并注销以在另一个可能尚未发送信件的人身上重新运行测试。 (4月30日是本周内,因此会导致警报显示)请参阅下面的新代码:
if browser.text.include?('30-Apr')
browser.link(:id,'sign_out').click
else
browser.send_keys 'This is a test'
browser.button(:id,'send-button').click
end
相关文章:
- 基于两个条件退出While循环
- Javascript:循环属性内部的条件递增或递减
- 在ng重复循环中显示条件内容的最佳方式是什么
- 如何使用React JS中的循环,根据条件渲染或不渲染表数据
- 如果条件为循环-性能差异
- Coffeescription:循环中的条件变量未正确声明
- Javascript'数组'和'循环'如何“;变量[i]”;是一个条件
- 使用条件for循环更新数组-Javascript
- 用于Javascript/MongoDB中的循环条件
- jquery 循环条件语句
- 当循环条件在jQuery中发生变化时
- php javascript echo javascript变量到php循环条件动态使用onclick或者我如何使用aj
- 针对循环条件问题
- 为循环条件缓存数组长度会影响性能吗?
- 在带有变量/while循环条件的javascript中出现问题
- 是否可以在循环条件中使用if.else语句
- If语句中嵌入For循环条件Javascript/jQuery
- While循环条件中的语句
- 带有for循环+条件的Javascript数组删除不必要的元素
- 失踪;在 for 循环条件之后