Ruby/watir怎么捕获JS弹出窗口以取得警告信息的内容
大家可参考: http://xk.cn.yahoo.com/msp/writer/post.html ,或下载附件,查看该网页的代码就是一个文章发文的系统,如果不输入标题,其它正常输入,点击提交,则弹出JS警告窗口,警告信息为:请输入标题
如果不输入正文,则警告信息为:请输入正文
如何能捕获到该警告信息?
调用新线程处理警告窗口倒已解决。 用AutoIT的实例,编写一个监听处理程序,参数为弹出的窗口的信息和要做的操作。
然后在每次触发事件前,通过新线程在操作系统级先启一个动监听程序的实例,等到窗口弹出后,监听处理程序自然就会获得窗口的控制权,并根据参数进行相应的操作。
关键在于,在获得弹出窗口的控制权后,需要窗口处于激活状态,使其可以接受鼠标键盘事件。
Autoit的以下3个方法可以解决问题:
autoit.ControlGetHandle(title,texts,"")
autoit.WinActivate(title,texts)
autoit.Send("\{#{operation}\}")
[ 本帖最后由 spqr_tristan 于 2007-8-5 01:27 编辑 ] 能不能把解决的方法贴出来 让大家学习学习 弹出的 MsgBox 框框无外乎几个属性:"Prompt", vbYesNo, "Title", HelpFile
提示信息存储在"Prompt"中, 你进watir里面搜索 Prompt方面的信息,看能不能获得这些信息。 调用新线程处理警告窗口倒已解决?
能不能教我啊?
下面有一段代码是线程解决弹出窗口的,但是我调用不通,你能改进,或者把你那个发给我么?谢谢
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) }
页:
[1]