首页 > watir > 在Watir中利用AutoIt关闭弹窗

在Watir中利用AutoIt关闭弹窗

2010年1月14日 leleba 发表评论 阅读评论

今天是一个高兴的日子,我终于成功地利用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, 基本上可以解决大部分网页测试的问题了。

我自己的原创: http://www.sdgz.cn



分类: watir 标签: , ,
  1. Enix
    2010年1月20日09:43 | #1

    我之前用java做selenium的时候,也是通过调用windows下的user32.dll中的方法来处理ie弹出框的。现在我也开始用watir做automation,对于ruby我还是新手,希望有空的时候能够多交流

  2. Enix
    2010年1月20日09:44 | #2

    以前我用java做selenium的时候,也是通过调用windows下的user32.dll中的方法来处理ie弹出框的。现在我也开始用watir做automation,对于ruby我还是新手,希望有空的时候能够多交流

  3. enix
    2010年1月20日09:45 | #3

    以前我用java做selenium,也是通过调用windows下的user32.dll中的方法来处理ie弹出框的。现在我也开始用watir做automation,对于ruby我还是新手,希望有空的时候能够多交流

  4. enix
    2010年1月20日09:47 | #4

    也是通过调用windows下的user32.dll中的方法来处理ie弹出框的,不过那时候我是用java做selenium的automation。现在我也开始用watir做automation,对于ruby我还是新手,希望有空的时候能够多交流

  5. enix
    2010年1月20日09:50 | #5

    我现在也在用watir做automation,你的文章对我帮助很大。对于ruby和watir我还是新手,希望以后有空多交流,我之前用java做selenium的时候,也是用过调用windows上的user32.dll的方法来处理IE弹出框的。

  6. xgn
    2010年1月20日10:04 | #6

    enix兄弟:评论是需要审核的,看到你接连发了几条评论,应该比较着急吧,特地上网来通过你的评论。

    欢迎交流,谢谢。

    @Enix

  7. ivory
    2010年4月1日18:17 | #7

    请问Ruby可以控制jQuery Alert Dialogs 讯息提示框
    窗口吗?

  8. sss
    2010年5月4日09:07 | #8

    现在来可能有点晚 我就是想请教下firewatir向网站输入中文乱码的问题,我也是ruby和watir的新手,希望能多交流交流下

  9. sss
    2010年5月4日09:09 | #9

    现在来可能有点晚 我就是想请教下firewatir向网站输入中文乱码的问题,我也是ruby和watir的新手,希望能多交流交流下,我刚学习ruby不到俩个月

  10. sss
    2010年5月4日09:13 | #10

    还有就是做net自动测试,以前没接触过,刚开始工作,boss先让我做了 一些网站数据下载的程序,感觉有收获,但是受限于IE,本来准备在linux上跑Firefox的,但中文卡的吐血

  11. sss
    2010年5月4日09:16 | #11

    现在boss也放弃了,决定还是在IE跑,但我觉得以后还是要用到Firefox的所以还是希望有人帮帮忙,希望前辈能多多联系下

  12. sss
    2010年5月4日09:17 | #12

    通过邮件联系最好了 >.<
    gzl_gy@163.com

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
      
                  
      

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word