51Testing软件测试论坛

标题: watir中ie出现弹出窗口后如何定位回ie [打印本页]

作者: berniebd    时间: 2010-5-14 11:34
标题: watir中ie出现弹出窗口后如何定位回ie
在网上搜索了几种解决watir弹出窗口的方案,尝试了autoit和win32api这两种解决方案,出现的问题都
是,处理弹出窗口的那块代码无法返回父ie,进行弹出窗口操作,有什么办法可以解决这个问题么
作者: duowanlaomao    时间: 2010-5-15 11:05
lz遇到是模态窗口吗?  http://www.baidu.com/s?bs=click_no_wait&f=8&wd=%C4%A3%CC%AC%B4%B0%BF%DA见百度的解释

处理模态窗口非常麻烦,建议lz去官方论坛搜搜关于  Watir::IE#attach_modal() 的文章,


另外,建议lz认真看看这个文章,http://piecehealth.javaeye.com/blog/605019


该文指出了一个很重要的问题,
如果watir操作的ie窗口出现了popup,这导致页面内的任何元素无法被操作、访问
(如 常见的alert、confirm框或者其他各种对话框弹出后,不关闭这个对话框就不能点击网页上的按钮,貌似锁死)
那么watir默认会等到这个ie窗口的popup全部关闭才能继续执行ruby代码,如果代码中没有处理popup,那么程序就走不动了

为了解决这个问题,watir做了一个click_no_wait(以后也许会有更多xxx_no_wait)方法,
即点击某个按钮后,忽略该操作是否导致ie锁死,继续执行之后的代码,可问题是,直到watir1.6.5,这个click_no_wait方法依然有bug
针对click_no_wai的bug,该文已给出了解决方法,我试过了,有效!

模态窗口也会导致主窗口死锁,代码应该增加处理模态窗口的逻辑。一般的做法是另起一个thread,关闭这个模态窗口。

关于“另起一个thread”的代码,请看我上传的附件。
该附件中有关于“不用、使用thread关闭popup的方法”针对不同的情况使用。

附件说明:
测试用到的网页 1.html  
测试程序 main.rb
解决click_no_wait用到的代码 ClickHelper.rb  
调用thread时用到的代码  WindowHelper.rb
调用thread时用到的代码 win_click.rb

[ 本帖最后由 duowanlaomao 于 2010-5-15 12:19 编辑 ]
作者: duowanlaomao    时间: 2010-5-20 15:57
http://samples.msdn.microsoft.co ... howModalDialog2.htm  传说中的模态窗口,用来验证你的代码吧!
作者: sissy0616    时间: 2010-9-13 10:50
ls有关于Basic Authentication这种弹出框的例子吗?我现在就是识别不到Basic Authentication这个弹出框,也不报错,就等在那里




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