在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时间不匹配的话,以上代码不能正常运行。

比较疑惑的是,以下代码不能正常运行:

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
之后,以上代码运行成功。

我自己的原创: http://www.sdgz.cn
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值