0

所以在某些测试用例中,我的应用程序会抛出一个 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
4

4 回答 4

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

它不是很优雅,但它可能会满足您的需求

于 2012-04-30T19:02:00.747 回答
1

也许我误解了,但显而易见的答案似乎是:

javascript_dialog.button('OK').click if javascript_dialog.button('OK').exists?
于 2012-05-01T01:53:53.870 回答
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
于 2012-05-10T09:39:23.033 回答
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
于 2012-05-02T16:41:10.420 回答