1

我刚刚开始学习 Watir ......我被这个困住了:

我尝试让 Watir 点击(并阅读内容)这个 javascript 弹出窗口:

http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert

我的 Watir 代码如下所示:

require 'watir'
b = Watir::Browser.start "www.w3schools.com/js/tryit.asp?filename=tryjs_alert"
b.maximize
b.frame(:name, "view").button(:text, "Show alert box").click
b.javascript_dialog.button('OK').click

..但它不起作用,Watir 没有单击弹出窗口上的“确定”按钮。

我知道 Watir-Webdriver 可以处理弹出窗口(“browser.alert.ok”),但是“经典”的 IE-only Watir 可以做到这一点(没有任何复杂的黑客,使用 AutoIt/Sikuli 等)?

编辑:我能够用这一行完全删除弹出窗口:

b.frame(:name, "view").execute_script("window.alert = function() {}")

总比没有好,现在测试不会挂在弹出窗口上,但我仍然无法确认/读取弹出窗口......

4

1 回答 1

0

看起来在 Watir 单击按钮打开 javascript 对话框后,它正在等待它永远不会得到的东西。

解决方案是单击带有 的按钮click_no_wait。试试这个:

require 'watir'
b = Watir::Browser.start "www.w3schools.com/js/tryit.asp?filename=tryjs_alert"
b.maximize
b.frame(:name, "view").button(:text, "Show alert box").click_no_wait
b.javascript_dialog.button('OK').click

更新:刚刚注意到这记录在 Watir wiki - http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups(见第一个例子)。

于 2012-07-25T12:55:52.230 回答