假装不在 发表于 2008-9-25 21:48:55

【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:20

:victory: :victory:

xiaoyaoke 发表于 2008-9-26 09:29:12

我一般在动手在代码之前先明确逻辑,最好画个逻辑流程图,逻辑清晰了再将流程图转化为代码。我感觉这样就可以避免LZ说得问题了。

假装不在 发表于 2008-9-26 09:44:05

回复 3# 的帖子

问题都会发生在不经意间的。哈哈,任何代码,无论你在编写前,准备得多详细,都会有漏洞存在的,因为人无完人,自然会有考虑不周到的地方。

另外,你说画流程图就不会出现我说的那个问题,其实我的那个问题是和流程没多大关系,是一些编码的习惯问题。因为没发生问题前,谁都没想到QTP会在and的第一个条件出错时候,他还会去看第2个是否正确。一般情况是没有考虑的。

rcpp 发表于 2008-9-26 09:53:41

理想的做法是把这类会大量重复的逻辑封装起来
丢给测试人员用的尽可能少有逻辑,弱化熟练度的差异造成脚本质量差异
尽量让业务脚本中少出现判断,出错率也会下降

heqingbluesky 发表于 2008-9-26 10:58:01

知识普及,顶一下。

wslss007 发表于 2008-9-26 11:27:07

呵呵,小知识,但积累起来就很重要了,谢谢。

meiguishijun 发表于 2008-9-27 10:11:56

webedit
要想学习像webedit是什么,如何用等等知识,需要学习哪方面的知识?:handshake 谢谢

假装不在 发表于 2008-9-27 11:04:16

原帖由 meiguishijun 于 2008-9-27 10:11 发表 http://bbs.51testing.com/images/common/back.gif
webedit
要想学习像webedit是什么,如何用等等知识,需要学习哪方面的知识?:handshake 谢谢



:lol :lol 你不说还真不知道,其实是代码写错了,是webbutton:handshake

zy-cumt 发表于 2008-9-27 13:58:46

学习一下,顶,目前正在研究QTP的使用

hsjzfling 发表于 2008-9-27 15:18:17

原帖由 假装不在 于 2008-9-26 09:44 发表 http://bbs.51testing.com/images/common/back.gif
问题都会发生在不经意间的。哈哈,任何代码,无论你在编写前,准备得多详细,都会有漏洞存在的,因为人无完人,自然会有考虑不周到的地方。

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

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

当然,还有一点,也是最重要的一点——实践完了发上来share~~~:lol

z93620104 发表于 2008-9-27 15:37:29

知识分享
经验共享

loho1968 发表于 2008-9-27 15:40:00

其实,如果你的程序对有好的错误处理,第一种写法没有什么问题。
试想一种情况:如果Button没有了,第2种写法同样要出错。如果没有错误处理,也同样的有问题。

假装不在 发表于 2008-9-27 16:16:01

原帖由 loho1968 于 2008-9-27 15:40 发表 http://bbs.51testing.com/images/common/back.gif
其实,如果你的程序对有好的错误处理,第一种写法没有什么问题。
试想一种情况:如果Button没有了,第2种写法同样要出错。如果没有错误处理,也同样的有问题。


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

实践实践实践!

yxfqjj 发表于 2008-10-6 14:59:24

顶下~~~~~~~

qicyt1812 发表于 2008-10-7 17:23:56

呵呵,好久不来了,这里热火朝天啊

lvxjsheng0508 发表于 2008-10-9 18:08:18

之前研究过QTP,后来由于工作忙,就放下了.当时遇到了很多的问题,到现在还没有解决呢.

lery 发表于 2009-9-9 22:57:43

还真没怎么去了解过VBS,只知道它可以干哪些活儿。。。。目前俺还停留在如何将项目赶紧搞好跑起来,离完善这种思想还很远 要继续努力啊

dabeixiong 发表于 2009-9-9 23:46:14

第一个条件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:02

第一个条件False时竟然还继续判断后面的条件...VBS这块是有古怪,LZ能发现果然够牛...我是这么试出来的...大 ...
dabeixiong 发表于 2009-9-9 23:46 http://bbs.51testing.com/images/common/back.gif


    楼上:kiss:
页: [1] 2
查看完整版本: 【QTP编码小知识 一】