【QTP编码小知识 一】
【QTP编码小知识 一】在这里先给大家看看一下代码:
if browser("百度一下").page("百度一下").webbutton("百度一下").exist(0) and _
browser("百度一下").page("百度一下").webbutton("百度一下").object.disabled and _
browser("百度一下").page("百度一下").webbutton("百度一下").object.visible then
browser("百度一下").page("百度一下").webbutton("百度一下").click
end if
自然,如果学过编程的人,会觉得,恩,这样写很正常,但是没有怎么学过的人,他或者会写成这样
if browser("百度一下").page("百度一下").webbutton("百度一下").exist(0) then
if browser("百度一下").page("百度一下").webbutton("百度一下").object.disabled then
if browser("百度一下").page("百度一下").webbutton("百度一下").object.visible then
browser("百度一下").page("百度一下").webbutton("百度一下").click
end if
end if
end if
你学习过了编程,知道了,如果and的条件,如果有一个否,哪么就全部为否,自然是这个是逻辑条件的问题,你有学过,所以
你写成2个and的方法去简略代码。但问题往往发生在这里,就和变魔术一样,大人看不出,但小孩就可以看出里面的问题,因为大人
的思想会被自己所谓的经验所左右。
这段代码的错误地方发生在那里,估计读到这里的人大部分已经猜到了,错误会发生在第1片中的2 3行!!你会问为什么?这应
该没错菜对的呀?不存在它就条不进行点击了么?但不存在时候,其实QTP会去判断and的其他2个条件,因为webbutton的不存在,导致
了object不能使用,所以在这里会出现报错的情况。
首先说下QTP它在 逻辑判断这块的处理,有人说,如果and其中第一个条件是假的,哪么判断就直接跳出去了,对,没错,这个
是针对某些语言而言,但是QTP自己在使用VBS中,自己又加了点手脚,或者是VBS自己本身就存在这样的问题。
这些也都是在实际编码过程中会发现的问题,大家慢慢积累,让自己的代码出现更少的BUG,哈哈,感觉好像在做白盒测试。
[ 本帖最后由 假装不在 于 2008-9-27 11:04 编辑 ] :victory: :victory: 我一般在动手在代码之前先明确逻辑,最好画个逻辑流程图,逻辑清晰了再将流程图转化为代码。我感觉这样就可以避免LZ说得问题了。
回复 3# 的帖子
问题都会发生在不经意间的。哈哈,任何代码,无论你在编写前,准备得多详细,都会有漏洞存在的,因为人无完人,自然会有考虑不周到的地方。另外,你说画流程图就不会出现我说的那个问题,其实我的那个问题是和流程没多大关系,是一些编码的习惯问题。因为没发生问题前,谁都没想到QTP会在and的第一个条件出错时候,他还会去看第2个是否正确。一般情况是没有考虑的。 理想的做法是把这类会大量重复的逻辑封装起来
丢给测试人员用的尽可能少有逻辑,弱化熟练度的差异造成脚本质量差异
尽量让业务脚本中少出现判断,出错率也会下降 知识普及,顶一下。 呵呵,小知识,但积累起来就很重要了,谢谢。 webedit
要想学习像webedit是什么,如何用等等知识,需要学习哪方面的知识?:handshake 谢谢 原帖由 meiguishijun 于 2008-9-27 10:11 发表 http://bbs.51testing.com/images/common/back.gif
webedit
要想学习像webedit是什么,如何用等等知识,需要学习哪方面的知识?:handshake 谢谢
:lol :lol 你不说还真不知道,其实是代码写错了,是webbutton:handshake 学习一下,顶,目前正在研究QTP的使用 原帖由 假装不在 于 2008-9-26 09:44 发表 http://bbs.51testing.com/images/common/back.gif
问题都会发生在不经意间的。哈哈,任何代码,无论你在编写前,准备得多详细,都会有漏洞存在的,因为人无完人,自然会有考虑不周到的地方。
另外,你说画流程图就不会出现我说的那个问题,其实我的那个问题是和流 ...
VBS和java, C等语言有非常大的区别,切不可拿这些编程经验往vbs上套,典型的经验主义~~~
不确定的就得抱怀疑的态度去尝试,实践出真知。
当然,还有一点,也是最重要的一点——实践完了发上来share~~~:lol 知识分享
经验共享 其实,如果你的程序对有好的错误处理,第一种写法没有什么问题。
试想一种情况:如果Button没有了,第2种写法同样要出错。如果没有错误处理,也同样的有问题。 原帖由 loho1968 于 2008-9-27 15:40 发表 http://bbs.51testing.com/images/common/back.gif
其实,如果你的程序对有好的错误处理,第一种写法没有什么问题。
试想一种情况:如果Button没有了,第2种写法同样要出错。如果没有错误处理,也同样的有问题。
这个就错了。
第一种写法,如果button没有了,哪么它还会去取button的属性,导致出错
第二种,如果你使用判断exist(0),因为对象不存在而让它出错,哪么这个方法就没意义了。如果不存在,下面2个if就不用判断,同时错误也不会发生。
实践实践实践! 顶下~~~~~~~ 呵呵,好久不来了,这里热火朝天啊 之前研究过QTP,后来由于工作忙,就放下了.当时遇到了很多的问题,到现在还没有解决呢. 还真没怎么去了解过VBS,只知道它可以干哪些活儿。。。。目前俺还停留在如何将项目赶紧搞好跑起来,离完善这种思想还很远 要继续努力啊 第一个条件False时竟然还继续判断后面的条件...VBS这块是有古怪,LZ能发现果然够牛...我是这么试出来的...大家应该明白了吧...
a = 2
If a=3 And SecondCheck(a) Then
'If判断两个条件都为真时才输出OK
MsgBox "ok"
End If
'VBS如果对第二个条件进行检查则输出
Function SecondCheck(b)
If b = 2 Then
MsgBox b
End If
End Function 第一个条件False时竟然还继续判断后面的条件...VBS这块是有古怪,LZ能发现果然够牛...我是这么试出来的...大 ...
dabeixiong 发表于 2009-9-9 23:46 http://bbs.51testing.com/images/common/back.gif
楼上:kiss:
页:
[1]
2