在Watir中利用AutoIt关闭弹窗
今天是一个高兴的日子,我终于成功地利用AutoIt关闭IE弹窗了。
利用Watir进行网页测试已经有2年多了,但始终在处理IE弹窗上卡壳,网上有不少介绍和例子可供借鉴,但以前均未能测试成功。
先将代码列出:
require ‘watir’
require ‘win32ole’
require ‘watir/windowhelper’
………
………
ie33.link(:id, “something”).click_no_wait
sleep 3 #时间长短可能影响能否关闭弹窗
#sleep 2
puts “before autoit”
autoit = WIN32OLE.new(‘AutoItX3.Control’)
puts “before loop do”
loop do
puts “in loop”
#ret = autoit.WinWaitActive(“Windows Internet Explorer”, “”,9)
#ret = autoit.WinWaitActive(“来自网页的信息”, “”,9)
ret = autoit.WinWaitActive(“Microsoft Internet Explorer”, “”,9)
puts “after ret”
puts(ret)
if (ret==1)
autoit.Send(“{Enter}”)
exit
end
sleep 3
end
以前不成功的原因,主要是测试用电脑的环境不一样,今天尝试以上代码时,刚开始也不成功,ret始终等于0,偶然用鼠标碰了一下IE窗口,ret变为1。这才发现ie33.link(:id, “something”).click_no_wait语句之后的sleep时间长短很关键,不同的电脑以及网络速度不同,sleep时间不匹配的话,以上代码不能正常运行。
比较疑惑的是,以下代码不行:
require ‘watir’
require ‘win32ole’
require ‘watir/windowhelper’
………
………
Thread.new{
puts “before autoit”
autoit = WIN32OLE.new(‘AutoItX3.Control’)
puts “before loop do”
loop do
puts “in loop”
#ret = autoit.WinWaitActive(“Windows Internet Explorer”, “”,9)
#ret = autoit.WinWaitActive(“来自网页的信息”, “”,9)
ret = autoit.WinWaitActive(“Microsoft Internet Explorer”, “”,9)
puts “after ret”
puts(ret)
if (ret==1)
autoit.Send(“{Enter}”)
exit
end
sleep 3
end
}
ie33.link(:id, “something”).click_no_wait
在将ie33.link(:id, “something”).click_no_wait修改为ie33.link(:id, “something”).click之后,以上代码运行成功。
第一次往往是最难的,以后通过watir + nobogiri +mechanize + autoit, 基本上可以解决大部分网页测试的问题了。
我之前用java做selenium的时候,也是通过调用windows下的user32.dll中的方法来处理ie弹出框的。现在我也开始用watir做automation,对于ruby我还是新手,希望有空的时候能够多交流
以前我用java做selenium的时候,也是通过调用windows下的user32.dll中的方法来处理ie弹出框的。现在我也开始用watir做automation,对于ruby我还是新手,希望有空的时候能够多交流
以前我用java做selenium,也是通过调用windows下的user32.dll中的方法来处理ie弹出框的。现在我也开始用watir做automation,对于ruby我还是新手,希望有空的时候能够多交流
也是通过调用windows下的user32.dll中的方法来处理ie弹出框的,不过那时候我是用java做selenium的automation。现在我也开始用watir做automation,对于ruby我还是新手,希望有空的时候能够多交流
我现在也在用watir做automation,你的文章对我帮助很大。对于ruby和watir我还是新手,希望以后有空多交流,我之前用java做selenium的时候,也是用过调用windows上的user32.dll的方法来处理IE弹出框的。
enix兄弟:评论是需要审核的,看到你接连发了几条评论,应该比较着急吧,特地上网来通过你的评论。
欢迎交流,谢谢。
@Enix
请问Ruby可以控制jQuery Alert Dialogs 讯息提示框
窗口吗?
现在来可能有点晚 我就是想请教下firewatir向网站输入中文乱码的问题,我也是ruby和watir的新手,希望能多交流交流下
现在来可能有点晚 我就是想请教下firewatir向网站输入中文乱码的问题,我也是ruby和watir的新手,希望能多交流交流下,我刚学习ruby不到俩个月
还有就是做net自动测试,以前没接触过,刚开始工作,boss先让我做了 一些网站数据下载的程序,感觉有收获,但是受限于IE,本来准备在linux上跑Firefox的,但中文卡的吐血
现在boss也放弃了,决定还是在IE跑,但我觉得以后还是要用到Firefox的所以还是希望有人帮帮忙,希望前辈能多多联系下
通过邮件联系最好了 >.<
gzl_gy@163.com