andyzlp232 发表于 2009-7-23 17:14:03

高手指点:对话框点不掉的问题

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 编辑 ]

dreamever 发表于 2009-7-23 18:03:34

因为Browser("信用卡支付").Dialog("安全警报").Exist(3) 有可能会返回false,所以那句click的操作就不会被执行了。

andyzlp232 发表于 2009-7-23 18:08:46

原帖由 dreamever 于 2009-7-23 18:03 发表 http://bbs.51testing.com/images/common/back.gif
因为Browser("信用卡支付").Dialog("安全警报").Exist(3) 有可能会返回false,所以那句click的操作就不会被执行了。

我十分确定进入了IF语句内。也执行了Click操作。

intothestorm 发表于 2009-7-23 18:10:21

可能是QTP的bug,换成键盘输入吧。
Browser("信用卡支付").Dialog("安全警报").WinButton("是(Y)").Type micReturn

lantianwei 发表于 2009-7-23 18:11:33

我是觉得QTP应该确实进行了点击操作(这里的点击操作应该是通过发送WINDOWS消息实现的),只是Browser("信用卡支付").Dialog("安全警报").WinButton("是(Y)")这个按钮不接受QTP给它发送的这个消息 这主要应该是出于安全的考虑而这样设计的
LZ试下CLICK后面加个坐标值 比如click(1,6,6)

andyzlp232 发表于 2009-7-24 17:31:41

回复 5# 的帖子

你说的观点我不是很认同,因为如果WinButton("是(Y)")这个按钮不接受QTP给它发送的这个消息,那么前面几次应该也是点不掉的。。
现在的情况是有时候QTP能点掉,有时却是点不错。。很郁闷

kings727 发表于 2009-7-24 17:35:51

原帖由 andyzlp232 于 2009-7-24 17:31 发表 http://bbs.51testing.com/images/common/back.gif
你说的观点我不是很认同,因为如果WinButton("是(Y)")这个按钮不接受QTP给它发送的这个消息,那么前面几次应该也是点不掉的。。
现在的情况是有时候QTP能点掉,有时却是点不错。。很郁闷

在这个点击之前加一个wait(1) 试试

helina168 发表于 2009-7-24 21:27:12

学习了

chooseyou123 发表于 2009-7-27 00:56:18

恩,我感觉也是在点击之前要wait 一下,可能
你这个对话框弹出的时间可能程序区判断个东西延后了

chooseyou123 发表于 2009-7-27 00:57:12

因为网络或者系统的环境每时每刻都不一样
导致延迟的时间不同,所以你有时候点击的到有时候点击不到
所以适当放长的时间去wait

lantianwei 发表于 2009-7-27 21:30:11

回复 6# 的帖子

解决没?不好意思,是我没看清楚你的问题,还以为你每次都没有点击掉。
如果用WAIT可以解决,那么增加EXISTS的时间应该也行

[ 本帖最后由 lantianwei 于 2009-7-27 21:32 编辑 ]

nefax 发表于 2009-7-27 23:18:38

结果没有报错加wait肯定没用

心清清 发表于 2009-7-28 11:36:04

这个问题我也遇到过,没解决。因为能点掉的情况还是多些。

andyzlp232 发表于 2009-7-28 14:04:02

回复 11# 的帖子

加Wait,我曾试过,没有用。

lantianwei 发表于 2009-7-28 16:20:19

回复 14# 的帖子

用个WHILE循环下吧,起码可以WORKROUND

yubin 发表于 2009-7-28 16:27:47

wwww

kings727 发表于 2009-7-29 09:37:28

1、 如果按你说的“但在脚本多次重复运行时,就会出现几次QTP执行了Click操作,但对话框还是没有关闭的情况。 ”
而且测试报告上也显示,CLICK操作是做了。
这样说:脚本录制是没有问题的,因为从你的测试报告上来看,QTP找到了这个按钮,并且做了CLICK的操作。
2、那么就有可能是软件本身的问题。也就是点击了没有反应。
建议你对这个按钮做一个压力测试看看或者延长WAIT的时间。
QTP运行的速度是很快,至少比人反映快的多,按钮一出来就做操作了。
问题可能出在这里,软件没有对这个操作做出反应。

[ 本帖最后由 kings727 于 2009-7-29 09:39 编辑 ]

hugh007 发表于 2009-7-30 15:37:05

其实是焦点的问题,当前焦点不在对话框上 而是在之前的页面上。
我的解决方法是:
   
   nReturn = nReturn + ClickObject(WB_ATTENDANCEREPORTLIST_SAVEFILE)

   If WB_ATTENDANCEREPORTLIST_SAVEFILE.Exist(1) Then
   nReturn = nReturn + ClickObject(WB_ATTENDANCEREPORTLIST_SAVEFILE)
   End If

第一次点击保存按钮如果成功,不过if中的第二次点击;
如果不成功,焦点转移到了对话框上,第二次点击一定就可以点到了

kings727 发表于 2009-7-31 12:08:38

原帖由 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的操作的。

liujinkui 发表于 2009-7-31 13:03:11

加个激活

IfBrowser("信用卡支付").Dialog("安全警报").Exist(3) Then   
          Browser("信用卡支付").Dialog("安全警报").active
          Browser("信用卡支付").Dialog("安全警报").WinButton("是(Y)").Click
      End If
页: [1] 2
查看完整版本: 高手指点:对话框点不掉的问题