watir 关闭alert对话框

watir 关闭alert对话框

alert真是一个很烦人的问题,网上有很多解决方式,下面是我刚试完有效的方式:
html:
<input type="button" id="btn_alert" value="Alert" onClick="alert('我是弹出对话框')"/>

rb:

require 'watir'
require 'watir\contrib\enabled_popup'

ie = Watir::IE.new
ie.goto("D:/test.html")

sleep 5
ie.button(:id, 'btn_alert').click_no_wait

hwnd = ie.enabled_popup(10)
w = WinClicker.new

w.clickWindowsButton_hwnd(hwnd, "确定")

 

注意在点击 Button 时使用的是 click_no_wait 方法,而不是 click 方法。原因是 click 方法是阻塞模式的,当遇到弹出窗口时,必须等待弹出窗口关闭了 click 方法才会结束。click_no_wait 是非阻塞的,查看 watir 的源代码可以看到实际上 watir 是通过执行一个外部进程来实现点击操作的,这样相当阻塞了那个外部进程,而保证了当前脚本的顺利执行。


网上看到一位达人封装的方法很好,http://www.cnblogs.com/sky_online/archive/2009/04/27/1444525.html,不过还没有走通,待跑通之后更新此博客。注:其中rb文件中的at = Autoit::AutoItApi.new要改成at = LibAutoit::AutoItApi.new

你可能感兴趣的:(html,脚本,IE)