51Testing软件测试论坛

标题: 【QTP编码小知识 一】 [打印本页]

作者: 假装不在    时间: 2008-9-25 21:48
标题: 【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 编辑 ]
作者: hero001    时间: 2008-9-26 09:25

作者: xiaoyaoke    时间: 2008-9-26 09:29
我一般在动手在代码之前先明确逻辑,最好画个逻辑流程图,逻辑清晰了再将流程图转化为代码。我感觉这样就可以避免LZ说得问题了。
作者: 假装不在    时间: 2008-9-26 09:44
标题: 回复 3# 的帖子
问题都会发生在不经意间的。哈哈,任何代码,无论你在编写前,准备得多详细,都会有漏洞存在的,因为人无完人,自然会有考虑不周到的地方。

另外,你说画流程图就不会出现我说的那个问题,其实我的那个问题是和流程没多大关系,是一些编码的习惯问题。因为没发生问题前,谁都没想到QTP会在and的第一个条件出错时候,他还会去看第2个是否正确。一般情况是没有考虑的。
作者: rcpp    时间: 2008-9-26 09:53
理想的做法是把这类会大量重复的逻辑封装起来
丢给测试人员用的尽可能少有逻辑,弱化熟练度的差异造成脚本质量差异
尽量让业务脚本中少出现判断,出错率也会下降
作者: heqingbluesky    时间: 2008-9-26 10:58
知识普及,顶一下。
作者: wslss007    时间: 2008-9-26 11:27
呵呵,小知识,但积累起来就很重要了,谢谢。
作者: meiguishijun    时间: 2008-9-27 10:11
webedit
要想学习像webedit是什么,如何用等等知识,需要学习哪方面的知识? 谢谢
作者: 假装不在    时间: 2008-9-27 11:04
原帖由 meiguishijun 于 2008-9-27 10:11 发表
webedit
要想学习像webedit是什么,如何用等等知识,需要学习哪方面的知识? 谢谢




你不说还真不知道,其实是代码写错了,是webbutton
作者: zy-cumt    时间: 2008-9-27 13:58
学习一下,顶,目前正在研究QTP的使用
作者: hsjzfling    时间: 2008-9-27 15:18
原帖由 假装不在 于 2008-9-26 09:44 发表
问题都会发生在不经意间的。哈哈,任何代码,无论你在编写前,准备得多详细,都会有漏洞存在的,因为人无完人,自然会有考虑不周到的地方。

另外,你说画流程图就不会出现我说的那个问题,其实我的那个问题是和流 ...


VBS和java, C等语言有非常大的区别,切不可拿这些编程经验往vbs上套,典型的经验主义~~~
不确定的就得抱怀疑的态度去尝试,实践出真知。

当然,还有一点,也是最重要的一点——实践完了发上来share~~~
作者: z93620104    时间: 2008-9-27 15:37
知识分享
经验共享
作者: loho1968    时间: 2008-9-27 15:40
其实,如果你的程序对有好的错误处理,第一种写法没有什么问题。
试想一种情况:如果Button没有了,第2种写法同样要出错。如果没有错误处理,也同样的有问题。
作者: 假装不在    时间: 2008-9-27 16:16
原帖由 loho1968 于 2008-9-27 15:40 发表
其实,如果你的程序对有好的错误处理,第一种写法没有什么问题。
试想一种情况:如果Button没有了,第2种写法同样要出错。如果没有错误处理,也同样的有问题。



这个就错了。
第一种写法,如果button没有了,哪么它还会去取button的属性,导致出错
第二种,如果你使用判断exist(0),因为对象不存在而让它出错,哪么这个方法就没意义了。如果不存在,下面2个if就不用判断,同时错误也不会发生。

实践实践实践!
作者: yxfqjj    时间: 2008-10-6 14:59
顶下~~~~~~~
作者: qicyt1812    时间: 2008-10-7 17:23
呵呵,好久不来了,这里热火朝天啊
作者: lvxjsheng0508    时间: 2008-10-9 18:08
之前研究过QTP,后来由于工作忙,就放下了.当时遇到了很多的问题,到现在还没有解决呢.
作者: lery    时间: 2009-9-9 22:57
还真没怎么去了解过VBS,只知道它可以干哪些活儿。。。。目前俺还停留在如何将项目赶紧搞好跑起来,离完善这种思想还很远 要继续努力啊
作者: dabeixiong    时间: 2009-9-9 23:46
第一个条件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
作者: cswalkman    时间: 2010-11-4 14:48
第一个条件False时竟然还继续判断后面的条件...VBS这块是有古怪,LZ能发现果然够牛...我是这么试出来的...大 ...
dabeixiong 发表于 2009-9-9 23:46



    楼上
作者: yunbin_7    时间: 2010-11-4 17:20
学习了,谢谢楼主的分享啊。。。
作者: Jun_Li    时间: 2010-11-5 08:41
还有么  不错




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