因此,在某些测试用例中,我的应用程序将抛出一个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
答案 0 :(得分:2)
如果您尝试将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
它不是很优雅,但它可能会做你需要的
答案 1 :(得分:1)
也许我误解了,但显而易见的答案似乎是:
javascript_dialog.button('OK').click if javascript_dialog.button('OK').exists?
答案 2 :(得分:1)
如果对话框外观的时间不是随机的,但非常熟知/已定义,您可以使用其中一些:
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
答案 3 :(得分:0)
一旦我尝试点击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