51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 9018|回复: 21
打印 上一主题 下一主题

[原创] 【QTP编码小知识 一】

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-9-25 21:48:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-9-26 09:25:20 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-9-26 09:29:12 | 只看该作者
我一般在动手在代码之前先明确逻辑,最好画个逻辑流程图,逻辑清晰了再将流程图转化为代码。我感觉这样就可以避免LZ说得问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-9-26 09:44:05 | 只看该作者

回复 3# 的帖子

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

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

使用道具 举报

该用户从未签到

5#
发表于 2008-9-26 09:53:41 | 只看该作者
理想的做法是把这类会大量重复的逻辑封装起来
丢给测试人员用的尽可能少有逻辑,弱化熟练度的差异造成脚本质量差异
尽量让业务脚本中少出现判断,出错率也会下降
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-9-26 10:58:01 | 只看该作者
知识普及,顶一下。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-9-26 11:27:07 | 只看该作者
呵呵,小知识,但积累起来就很重要了,谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-9-27 10:11:56 | 只看该作者
webedit
要想学习像webedit是什么,如何用等等知识,需要学习哪方面的知识? 谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2008-9-27 11:04:16 | 只看该作者
原帖由 meiguishijun 于 2008-9-27 10:11 发表
webedit
要想学习像webedit是什么,如何用等等知识,需要学习哪方面的知识? 谢谢




你不说还真不知道,其实是代码写错了,是webbutton
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-9-27 13:58:46 | 只看该作者
学习一下,顶,目前正在研究QTP的使用
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-9-27 15:18:17 | 只看该作者
原帖由 假装不在 于 2008-9-26 09:44 发表
问题都会发生在不经意间的。哈哈,任何代码,无论你在编写前,准备得多详细,都会有漏洞存在的,因为人无完人,自然会有考虑不周到的地方。

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


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

当然,还有一点,也是最重要的一点——实践完了发上来share~~~
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2008-9-27 15:37:29 | 只看该作者
知识分享
经验共享
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2008-9-27 15:40:00 | 只看该作者
其实,如果你的程序对有好的错误处理,第一种写法没有什么问题。
试想一种情况:如果Button没有了,第2种写法同样要出错。如果没有错误处理,也同样的有问题。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2008-9-27 16:16:01 | 只看该作者
原帖由 loho1968 于 2008-9-27 15:40 发表
其实,如果你的程序对有好的错误处理,第一种写法没有什么问题。
试想一种情况:如果Button没有了,第2种写法同样要出错。如果没有错误处理,也同样的有问题。



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

实践实践实践!
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-10-6 14:59:24 | 只看该作者
顶下~~~~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2008-10-7 17:23:56 | 只看该作者
呵呵,好久不来了,这里热火朝天啊
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-10-9 18:08:18 | 只看该作者
之前研究过QTP,后来由于工作忙,就放下了.当时遇到了很多的问题,到现在还没有解决呢.
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2009-9-9 22:57:43 | 只看该作者
还真没怎么去了解过VBS,只知道它可以干哪些活儿。。。。目前俺还停留在如何将项目赶紧搞好跑起来,离完善这种思想还很远 要继续努力啊
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 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
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2010-11-4 14:48:02 | 只看该作者
第一个条件False时竟然还继续判断后面的条件...VBS这块是有古怪,LZ能发现果然够牛...我是这么试出来的...大 ...
dabeixiong 发表于 2009-9-9 23:46



    楼上
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-13 12:51 , Processed in 0.084627 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表