watir定位弹出窗口,并读取数据问题

watir定位弹出窗口,并读取数据问题

用php?name=watir" onclick="tagshow(event)" class="t_tag">watir作WEBphp?name=%B2%E2%CA%D4" onclick="tagshow(event)" class="t_tag">测试的时候,如果有弹出式的窗口出现。
那么如何用程序读取当前弹出窗口的内容呢?
郁闷ing。。。。。。。。。。。。。。。。。。。。。。。。。。。
在网上找了个例子,可以操作WEB页面的js弹出的消息对话框等。
但还是不知道怎么能够定位到一个POPUP的窗口。
并读出其中的信息。
看来,还得查了。
这周是没时间了,下周在弄吧。
这个问题提出来也有一段时间了。小生也是不断在网上查找。
下面是小生找到的以及总结的一点东西。与大家分享。
1、关于JS脚本弹出的消息对话框的控制。
  这类消息对话框通常是一些关于通知(Information)、确认(Confirm)、警告(warning)以及错误(Error)的
 提示信息,大部分的操作就是根据情况点击消息对话框上的按钮。【OK】【Cancel】 之类的。
方法一:
 用AutoIT的实例,编写一个监听处理程序,参数为弹出的窗口的信息和要做的操作。
 然后在每次触发事件前,通过新线程在操作系统级先启一个动监听程序的实例,等到窗口弹出后,监听处理程序自然就会获得窗口的控 
 制权,并根据参数进行相应的操作。
 关键在于,在获得弹出窗口的控制权后,需要窗口处于激活状态,使其可以接受鼠标键盘事件。
 Autoit的以下3个方法可以解决问题:
 autoit.ControlGetHandle(title,texts,"")
 autoit.WinActivate(title,texts)
 autoit.Send("\{#{operation}\}")
 原文地址:http://www.cnblogs.com/CommentsByAuthor.aspx?author=Hicome
 注: 小生没有试过这个方法。
方法二:(这个比较麻烦)
 解决这个问题的思路是启动另外一个进程,利用第三方工具(AutoIt),来完成对这些对象的操作。


Watir安装已经自带了AutoIt,但它的辅助方法还不太好。主要是缺少判断是否有box弹出的方法。

附件里提供有两个scrīpt,一个是作为另外一个进程运行的脚本clickJsDialogButton.rb,它的功能描述如下

  1) 探测pop box
  2) 如果发现了popup box,click "enter" key, or "escape" key.
  "enter" key 和click OK button效果一样
  "escape" key 和click Cancel button效果一样

[Copy to clipboard] [ - ]
方法二,小生试过,对于弹出的msgbox窗口,有效。


下面说一下如何取得popup窗口里的内容。
其实这里面的关键点也就是如何定位弹出的Popup窗口。
如果能够找到这个弹出窗口,自然也就可以对他进行各种各样的操作了。
1、 安装Watir1.4.1,然后再安装1.5.1的gem。我这里安装的是watir-1.5.1.1230.gem;
2、 写一个rb文件,比如popupwindow.rb,将startClicker函数放入其中,专门来处理popup window。记得在处理popup window前,要用sleep等待一段时间;
3、 在Watir执行Click、弹出popup window前,用Thread.new另起一个进程,这个进程只做一件事情,就是用命令行的方式运行刚刚写好的popupwindow.rb,system函数可以做到这件事情,命令行中要传入所需要的参数信息;
4、 执行Click、弹出popup window。当然要确保这个动作要在第2步sleep等待时间内完成;
5、 接下来,各位就可以看到popup window被处理掉,Watir又继续做它的工作了。

startClicker的源代码转贴如下:

[Copy to clipboard] [ - ]
如果不知道弹出窗口的title,该如何处理sleep?
我已经遇到sleep异常的情况了.