使用 ruby 的 Watir gem,我试图单击一个打开 javascript 弹出窗口的按钮,然后在弹出窗口上单击“确定”,我似乎无法做到这一点。按钮在一个框架中。我已经广泛搜索并阅读了有关 javascript 弹出窗口的 Watir wiki 条目,但没有任何效果。
我认为这是因为 execute_script 和 click_no_wait 没有按预期工作。
例如,以下命令:
@browser.execute_script('window.alert = function() {}')
@browser.execute_script('alert("hello")')
创建一个显示“你好”的 javascript 弹出窗口,而不是不做任何事情的预期行为。
命令:
@browser.button(:value, 'Submit').click
单击创建 javascript 弹出窗口的按钮。然后脚本挂起,直到我在弹出窗口上手动单击“确定”。
命令:
@browser.button(:value, 'Submit').click_no_wait
不单击按钮(或者它确实单击了按钮并且不触发 onclick 事件)。
我也试过:
Timeout::timeout(1) { @browser.button(:value, 'Submit').click }
和
Thread.new { @browser.button(:value, 'Submit').click }
但是 Timeout 永远不会引发异常,导致 ruby 挂起,直到我在弹出窗口上手动单击“确定”,当我在新线程中运行它时,Watir 不会单击。
有人可以提供帮助或提供解决方案吗?
编辑:问题是在@browser.button.click 之后,脚本挂起直到弹出窗口关闭。@browser.alert.ok 成功关闭了弹出窗口,但是在单击按钮后脚本无法执行@browser.alert.ok,因为它一直挂起直到弹出窗口关闭。这个catch-22应该通过click_no_wait解决,但是click_no_wait没有点击。
系统信息:
Windows 7 Enterprise 64 Bit
Internet Explorer Version 9.0.12
watir-4.0.2-x86-mingw32
ruby 1.9.3p286 (2012-10-12) [i386-mingw32]