51Testing软件测试论坛

标题: QTP检查点脚本 [打印本页]

作者: youdi2008    时间: 2008-5-12 14:07
标题: QTP检查点脚本
第一种代码:

Dim flag
flag= Browser("增加客户名称").Dialog("Microsoft Internet Explorer").WinButton("确定").Check( CheckPoint("确定"))
If flag=empty or flag=null Then '网页报错
     msgbox flag & "空"
elseif flag=false then  '检查不通过
     msgbox flag & "假"
elseif flag=true then  '检查通过
     msgbox flag & "真"
End If


第二种代码:
Dim flag
flag= Browser("增加客户名称").Dialog("Microsoft Internet Explorer").WinButton("确定").Check( CheckPoint("确定"))
If  flag=false then  '检查不通过     
     msgbox flag & "假"
elseif  flag=empty or flag=null Then '网页报错
     msgbox flag & "空"     
elseif flag=true then  '检查通过
     msgbox flag & "真"
End If


问题现象:无论是用第一种代码还是用第二种代码,当检查点不通过时,脚本都走第一个 if 后的语句,并且返回值 flag的值还是正确的。即:第一段代码弹出的对话框内容是:False空
        第二段代码弹出的对话框内容是:False假

这是为什么呀?应该都走 false条件后的语句呀?而为什么不按照预想的去执行呢?求大侠帮帮忙呀!困扰了我好久的问题了!

[ 本帖最后由 youdi2008 于 2008-5-12 14:11 编辑 ]
作者: zte_boy    时间: 2008-5-12 14:15
贴个图上来看看,呵呵
我原来也有这样的问题,后来解决了
不过我的是参数传递的时候类型变了,强制转换下就好了

你先价格TRIM、CSTR试下看看
作者: xiaonan    时间: 2008-5-12 16:17
这种问题,只要多放点断点,跟一下就知道了,没有走你预计的路线,那就肯定得到的值和你要比较的值还不能完全对上
作者: youdi2008    时间: 2008-5-12 16:53
标题: 补充贴图
不会贴图,看能否贴上去
作者: xiaoyaoke    时间: 2008-5-12 17:12
同xiaonan的建议,设置端点,看flag的值,然后分析问题所在
作者: zyx324    时间: 2008-5-12 23:47
提出一些个人看法仅供参考啊~,首先你对"确定"按钮做了检查点,那么返回的值有几个?只有true和false两个吧,你后面写的那个页面为空什么的也是属于false的情况,因此你分3个分支实际上就是错误的.另外if语句不能够写成"if flag=true"这样的形式,因为系统会自动将检查的结果附给flag,因此对于QTP来讲flag本身实际就已经带着检查结果了,所以只需要写成if flag then(系统会执行true的语句)
.....
else(系统会执行flase的语句)
.....
end if
作者: youdi2008    时间: 2008-5-13 09:45
标题: 回复
首先感谢各位的回答!
我觉得我的问题描述已经能反应出来 flag返回值到底是什么了,“第一段代码弹出的对话框内容是:False空;   第二段代码弹出的对话框内容是:False假”也就是两段代码 flag的返回值都是 False,与预想的一致,与比较的值false也一致。但却没有按照预想的流程去走。
另外,zyx324,我加三个分支是因为软件还有报错的情况,也就是软件有问题,网页报错,这样flag的值不是false,也不是true,我监测的值是null 或empty(qtp版本不同而不同好像)
作者: youdi2008    时间: 2008-5-13 09:58
标题: 问题解决了!!
zte_boy,我按照你的说法试了试。现在好了,果然是这个问题!太感谢你了!也感谢参与我问题的所有人!看来还是QTP的一个小bug呀。
作者: walker1020    时间: 2008-5-13 21:57
这绝对不是 QTP 的 Bug。根据你后面的代码( flag=empty or flag=null )来看 ,你不应该使用 WinButton("确定")对象的Check 方法,而应该使用 WinButton("确定")对象的 GetROProperty 方法来得到此对象的某个属性值,然后以此为条件进行判断。
作者: walker1020    时间: 2008-5-13 22:00
如果你对 QTP的检查点不是很了解,那么不要随便乱用它,更不要滥用它。功能再强大,如果你不会使用,那么对来说都是一种摆设。
作者: walker1020    时间: 2008-5-13 22:08
原帖由 youdi2008 于 2008-5-13 09:45 发表
首先感谢各位的回答!
我觉得我的问题描述已经能反应出来 flag返回值到底是什么了,“第一段代码弹出的对话框内容是:False空;   第二段代码弹出的对话框内容是:False假”也就是两段代码 flag的返回值都是 False, ...


flag= Browser("增加客户名称").Dialog("Microsoft Internet Explorer").WinButton("确定").Check( CheckPoint("确定"))

flag的值 是QTP 对WinButton("确定")对象的检查结果,它的值要么是 True ,要么是 False。难道它还可能有第三种情况?
作者: youdi2008    时间: 2008-5-15 11:16
标题: 回复walker1020
再次所有回答我问题的人!更感谢walker1020对我问题实质的指出!原来是我用的方式不对而导致。我刚接触测试不到半年,QTP确实一点经验也没有,对QTP只是初步了解阶段,敬问高人有没有学习QTP的好的快速的方法呀?有不错的书或者资料帮忙推荐一下,虽然知道它自带的英语帮助最好,但实在没有耐心和勇气看它,进展也慢。别人有什么建议也尽可以提,真的从心里非常感激和感谢大家的参与!
作者: youdi2008    时间: 2008-5-15 14:00
walker1020 ,我理解你的意思是应该写成这样的:

Dim flag
dim strwinbutton
flag=Browser("增加客户名称").Dialog("Microsoft Internet Explorer").Exist
If flag   Then
        strwinbutton=Browser("增加客户名称").Dialog("Microsoft Internet Explorer").WinButton("确定").GetProperty("text")
else '网页报错
        msgbox "网页报错"
End If
msgbox strwinbutton

我是想得到弹出对话框的内容,这怎么写代码呀?我这样写就没意义了吧?

[ 本帖最后由 youdi2008 于 2008-5-15 14:28 编辑 ]
作者: walker1020    时间: 2008-5-16 00:14
有意义的。你的点滴进步,对你来说,都非常有意义。
作者: youdi2008    时间: 2008-5-16 10:12
谢谢!




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