高手指点:对话框点不掉的问题
HI,各位:近日,偶会遇到一个问题,QTP明明已经对按钮执行了Click操作(从Report里可看出,见附图),但页面上的对话框还是存在,就像未执行click一样,脚本如下:
IfBrowser("信用卡支付").Dialog("安全警报").Exist(3) Then
Browser("信用卡支付").Dialog("安全警报").WinButton("是(Y)").Click
End If
脚本的本意是判断“安全警报”对话框如果存在,则点击对话框上面的“是”按钮,关闭对话框。但在脚本多次重复运行时,就会出现几次QTP执行了Click操作,但对话框还是没有关闭的情况。这个问题是不是QTP的Bug啊,我的版本是9.2的。
不知各位高手有没有遇到此类情况,怎么解决呢。
说明一点:可以确定每次运行..Dialog("安全警报").Exist(3)返回是True,即都进入了这个If语句内,也执行了Click操作。
[ 本帖最后由 andyzlp232 于 2009-7-23 18:07 编辑 ] 因为Browser("信用卡支付").Dialog("安全警报").Exist(3) 有可能会返回false,所以那句click的操作就不会被执行了。 原帖由 dreamever 于 2009-7-23 18:03 发表 http://bbs.51testing.com/images/common/back.gif
因为Browser("信用卡支付").Dialog("安全警报").Exist(3) 有可能会返回false,所以那句click的操作就不会被执行了。
我十分确定进入了IF语句内。也执行了Click操作。 可能是QTP的bug,换成键盘输入吧。
Browser("信用卡支付").Dialog("安全警报").WinButton("是(Y)").Type micReturn 我是觉得QTP应该确实进行了点击操作(这里的点击操作应该是通过发送WINDOWS消息实现的),只是Browser("信用卡支付").Dialog("安全警报").WinButton("是(Y)")这个按钮不接受QTP给它发送的这个消息 这主要应该是出于安全的考虑而这样设计的
LZ试下CLICK后面加个坐标值 比如click(1,6,6)
回复 5# 的帖子
你说的观点我不是很认同,因为如果WinButton("是(Y)")这个按钮不接受QTP给它发送的这个消息,那么前面几次应该也是点不掉的。。现在的情况是有时候QTP能点掉,有时却是点不错。。很郁闷 原帖由 andyzlp232 于 2009-7-24 17:31 发表 http://bbs.51testing.com/images/common/back.gif
你说的观点我不是很认同,因为如果WinButton("是(Y)")这个按钮不接受QTP给它发送的这个消息,那么前面几次应该也是点不掉的。。
现在的情况是有时候QTP能点掉,有时却是点不错。。很郁闷
在这个点击之前加一个wait(1) 试试 学习了 恩,我感觉也是在点击之前要wait 一下,可能
你这个对话框弹出的时间可能程序区判断个东西延后了 因为网络或者系统的环境每时每刻都不一样
导致延迟的时间不同,所以你有时候点击的到有时候点击不到
所以适当放长的时间去wait
回复 6# 的帖子
解决没?不好意思,是我没看清楚你的问题,还以为你每次都没有点击掉。如果用WAIT可以解决,那么增加EXISTS的时间应该也行
[ 本帖最后由 lantianwei 于 2009-7-27 21:32 编辑 ] 结果没有报错加wait肯定没用 这个问题我也遇到过,没解决。因为能点掉的情况还是多些。
回复 11# 的帖子
加Wait,我曾试过,没有用。回复 14# 的帖子
用个WHILE循环下吧,起码可以WORKROUND wwww 1、 如果按你说的“但在脚本多次重复运行时,就会出现几次QTP执行了Click操作,但对话框还是没有关闭的情况。 ”而且测试报告上也显示,CLICK操作是做了。
这样说:脚本录制是没有问题的,因为从你的测试报告上来看,QTP找到了这个按钮,并且做了CLICK的操作。
2、那么就有可能是软件本身的问题。也就是点击了没有反应。
建议你对这个按钮做一个压力测试看看或者延长WAIT的时间。
QTP运行的速度是很快,至少比人反映快的多,按钮一出来就做操作了。
问题可能出在这里,软件没有对这个操作做出反应。
[ 本帖最后由 kings727 于 2009-7-29 09:39 编辑 ] 其实是焦点的问题,当前焦点不在对话框上 而是在之前的页面上。
我的解决方法是:
nReturn = nReturn + ClickObject(WB_ATTENDANCEREPORTLIST_SAVEFILE)
If WB_ATTENDANCEREPORTLIST_SAVEFILE.Exist(1) Then
nReturn = nReturn + ClickObject(WB_ATTENDANCEREPORTLIST_SAVEFILE)
End If
第一次点击保存按钮如果成功,不过if中的第二次点击;
如果不成功,焦点转移到了对话框上,第二次点击一定就可以点到了 原帖由 hugh007 于 2009-7-30 15:37 发表 http://bbs.51testing.com/images/common/back.gif
其实是焦点的问题,当前焦点不在对话框上 而是在之前的页面上。
我的解决方法是:
nReturn = nReturn + ClickObject(WB_ATTENDANCEREPORTLIST_SAVEFILE)
If WB_ATTENDANCEREPORTLIST_SAVEFILE.Exist ...
如果是焦点的话,那QTP 如何在之前的页面上找到WinButton("是(Y)")这个按钮的呢?
而且从楼主给出的测试报告的图上,看出是在这个按钮上执行了CLICK的操作的。
加个激活
IfBrowser("信用卡支付").Dialog("安全警报").Exist(3) ThenBrowser("信用卡支付").Dialog("安全警报").active
Browser("信用卡支付").Dialog("安全警报").WinButton("是(Y)").Click
End If
页:
[1]
2