51Testing软件测试论坛

标题: Ruby/watir怎么捕获JS弹出窗口以取得警告信息的内容 [打印本页]

作者: yuedao    时间: 2007-7-9 12:08
标题: Ruby/watir怎么捕获JS弹出窗口以取得警告信息的内容
大家可参考: http://xk.cn.yahoo.com/msp/writer/post.html ,或下载附件,查看该网页的代码

就是一个文章发文的系统,如果不输入标题,其它正常输入,点击提交,则弹出JS警告窗口,警告信息为:请输入标题
如果不输入正文,则警告信息为:请输入正文


如何能捕获到该警告信息?
调用新线程处理警告窗口倒已解决。
作者: spqr_tristan    时间: 2007-8-5 01:25
用AutoIT的实例,编写一个监听处理程序,参数为弹出的窗口的信息和要做的操作。
然后在每次触发事件前,通过新线程在操作系统级先启一个动监听程序的实例,等到窗口弹出后,监听处理程序自然就会获得窗口的控制权,并根据参数进行相应的操作。
关键在于,在获得弹出窗口的控制权后,需要窗口处于激活状态,使其可以接受鼠标键盘事件。
Autoit的以下3个方法可以解决问题:
autoit.ControlGetHandle(title,texts,"")
autoit.WinActivate(title,texts)
autoit.Send("\{#{operation}\}")

[ 本帖最后由 spqr_tristan 于 2007-8-5 01:27 编辑 ]
作者: haiquan180    时间: 2008-2-3 10:57
能不能把解决的方法贴出来 让大家学习学习
作者: cjq_999    时间: 2008-7-3 13:30
弹出的 MsgBox 框框无外乎几个属性:"Prompt", vbYesNo, "Title", HelpFile
提示信息存储在"Prompt"中, 你进watir里面搜索 Prompt方面的信息,看能不能获得这些信息。
作者: cjq_999    时间: 2008-7-3 13:33
调用新线程处理警告窗口倒已解决?
能不能教我啊?
下面有一段代码是线程解决弹出窗口的,但是我调用不通,你能改进,或者把你那个发给我么?谢谢
def check_for_popups
    autoit = WIN32OLE.new('AutoItX3.Control')
    # Do forever - assumes popups could occur anywhere/anytime in your application.
    loop do
        # Look for window with given title. Give up after 1 second.
        ret = autoit.WinWait("Microsoft Internet Explorer", '', 1)
        #
        # If window found, send appropriate keystroke (e.g. {enter}, {Y}, {N}).
        if (ret==1) then autoit.Send('{enter}') end
        #
        # Take a rest to avoid chewing up cycles and give another thread a go.
        # Then resume the loop.
        sleep(3)
    end
end
$popup = Thread.new { check_for_popups }  # start popup handler
at_exit { Thread.kill($popup) }




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2