WEB-QTP随想录—自行车的事故

注:原文最早是发表在www.automationqa.com上面的,后来因为网站被黑而文章内容消失了,希望csdn别被黑了。

关于转载:本文为原创文章,欢迎转载,但转载需要标注出处以及保证内容的完整性,请理解写作的寂莫和苦处。

关于版权:本文不得应用于以赢利为目的的任何场景,否则本人保留相应的权利。

今天买菜回家时,见到了一起事故,红灯时一辆三轮自行车快速的行驶,看他的样子似乎想闯红灯,神奇的事情就在即将闯红灯成功时上演了。自行车的前轮突然断裂,这位司机被狠狠地抛了出去,还好人没什么事。真不敢想象,如果在马路中间发生这事故,这位司机会怎么样。更说不清楚,今天这位司机是运气好呢还是运气不好。人生有时候似乎非常的无常!


同样,当我今晚打开QTP搜寻今晚的内容时,突然发现了CheckProperty方法。以前一直没有注意到这个方法,可能是因为学习的时候是用的8.2的缘故吧!最近老在想,我这样写下去有何意义,也许我考虑得过多,何必在乎呢,看看帮助文档,一个一个地结合有的经验写下去,收获最多的也许最终还是我,就像今天发现的这个方法一样。


好吧,我们还是来看看CheckProperty方法吧。


使用语法:object.CheckProperty (PropertyName,PropertyValue, [TimeOut])
方法含义:在设定的时间内检查对象的某个属性的值与期待值是否一致
参数的含义:PropertyName,属性名称;PropertyValue,属性的期望值;[TimeOut]可选,时间(以毫秒为单位)
返回值:true或false。True在result中写pass,flase写fail。


看看另外一个方法:


object .WaitProperty ( PropertyName, PropertyValue, [ TimeOut] )
    方法含义:在设定的时间内等待某个对象的属性出现期待结果的值,以继续下一个步骤的操作。
    返回值:true或false。


这两个方法似乎有些相似,但这两者之间还是有很大区别的。CheckProperty方法是用来代替标准检查点的,它检查某个对象的属性值是与设定值一致,一致则result报告中,此处显示为Pass,否则Fail。而WaitProperty方法是等待某个属性值出现,出现则执行下一步操作,没有出现则等着你处理,但相应结果在result报告中只显示为Done Warning,也就是说,他们的区别在于是否在结果文件中有显示 FailPass


好吧,我们做个试验,上面的解释也就很直白了。录制下面这个操作,“打开Baidu直接点击百度一下”,然后把代码改成这样:


With Browser("百度一下,你就知道")
    With .Page("百度一下,你就知道")
       ''测试结果文件中是否显示Pass
       .WebButton("百度一下").CheckProperty "name","百度一下",200
       '测试结果文件中是否显示fail
       .WebButton("百度一下").CheckProperty "name","百度一下2",300
       '测试WaitProperty方法是否在结果中显示pass等信息
       .WebButton("百度一下").WaitProperty "name","百度一下",400
       '测试WaitProperty方法是否在结果中显示fail等信息
       .WebButton("百度一下").WaitProperty "name","百度一下2",500
       .WebButton("百度一下").Click
       .Sync
    End With
    .CloseAllTabs
End With


看看代码,这次与以往有什么不同呢?这次我们显示代码的方式是用的with …end with的方式,with …end with的语法如果你不明白,请查阅一下vbscript的基本语法,在此就不解释了。QTP提供了是否以with …end with语法显示语句的方式,你只需要按Ctrl+W就使用with语句,Ctrl+Shift+W就还原代码显示的传统方式。使用with语句的好处,简单地说代码看上去更有结构性一些,当然你习惯使用传统方式显示也是可以的,这在于个人爱好。就像不可能人人都喜欢瘦瘦的女孩一样,每个人都有保留自己个性的权利。
废话了一些,还是看看result报告中的结果吧。一个一个地点开,就可以清晰地知道他们的区别了。
CheckProperty方法WaitProperty还有一些配套的方法来使用:

1、Object.CheckProperty "items count",micGreaterThan(参数)

如:Browser().Page().WebList().CheckProperty "items count",micGreaterThan(8)

检查items count下拉框中的个数是否超过8个,micGreaterThan(int) 用于检查某些特别的属性是否超过规则的长度。个人觉得此种方法,特别适用于下拉框的items count检查,或者WebTable的cols、rows,或WebImage的height、width或WebEdit的maxlength等结果为数字类型的属性的检查,当然下面的micLessThan、micGreaterThanOrEqual、micLessThanOrEqual等也是这样的。

2、Object.CheckProperty "items count",micLessThan (参数)

如:Browser().Page().WebList().CheckProperty "items count",micLessThan(8)

检查items count下拉框中的个数是否少于8个

3、Object.CheckProperty "items count",micGreaterThanOrEqual (参数)

如:Browser().Page().WebList().CheckProperty "items count",micGreaterThanOrEqual (8)

检查下拉框的items count的值是否大于或等于8

4、Object.CheckProperty "items count",micLessThanOrEqual (参数)

如:Browser().Page().WebList().CheckProperty "items count",micLessThanOrEqual (8)

检查下拉框的items count的值是否小于或等于8

5、Object.CheckProperty "items count",micNotEqual (参数)

如:Browser().Page().WebList().CheckProperty "items count",micNotEqual (8)

检查下拉框的items count是否不等于8。

6、Object.CheckProperty "items count",micRegExpMatch (参数)

如:Browser().Page().WebEdit().CheckProperty "value",micRegExpMatch ("度.*")

检查输入框的value值是否匹配度.*的正则表达式。

不知大家注意没有,上述6种方法的参数我都是以(参数)来代替的,而没有以某种数据类型来指定。

那么这些参数的类型可以是那些呢?

1、Empty values

检查某个属性的值是否不为空值。

如:Browser().Page().WebEdit().CheckProperty "text",micNotEqual (vbEmpty))

检查输入框的值是否不为空值。

2、String values

检查某个属性的值是否为该字符串,注意当某属性的值为数字类型,而比较的是非数字类型时将会转换为数字类型(当然我们知道某个字符是可以转换成数字的),而非数字类型不能转换为数字型,比较的结果将会是false.

3、Boolean values

检查某个属性的值是否为true或者false.

如:Browser().Page().CheckBox().CheckProperty  "checked", true

检查选择框是否选中

4、Other value types

QTP的帮助文档是在这里是这么解释的:如果参数的类型与已设定的不匹配,则假设两者不相等。

可能你有些晕了,因为我已经有些晕了,为了彻底看看这些方法和不同参数的效果,我们继续来做一下试验,将上面的代码改成以下内容,代码的解释我在下面已做了详细说明,这里就不解释了:

With Browser("百度一下,你就知道")

   With .Page("百度一下,你就知道")

      ''测试结果文件中是否显示Pass

      .WebButton("百度一下").CheckProperty "name","百度一下",200

      '测试结果文件中是否显示fail

      .WebButton("百度一下").CheckProperty "name","百度一下2",300

      '测试WaitProperty方法是否在结果中显示pass等信息

      .WebButton("百度一下").WaitProperty "name","百度一下",400

      '测试WaitProperty方法是否在结果中显示fail等信息

      .WebButton("百度一下").WaitProperty "name","百度一下2",500

      '#测试开始

      

      '#目的:测试micGreaterThan等方法,参数为数字

      '#时间:略

      '#名称:A

      ''检查百度一下按钮的高度是否大于31,应该是32,所以结果应该是pass

      .WebButton("百度一下").CheckProperty "height",micGreaterThan(31)

      ''检查百度一下按钮的高度是否小于33,应该是32,所以结果应该是pass

      .WebButton("百度一下").CheckProperty "height",micLessThan(33)

      ''检查百度一下按钮的高度是否大于或等于32,应该是32,所以结果应该是pass

      .WebButton("百度一下").CheckProperty "height",micGreaterThanOrEqual(32)

      '检查百度一下按钮的高度是否大于或等于31,应该是32,所以结果应该是pass

      .WebButton("百度一下").CheckProperty "height",micGreaterThanOrEqual(31)

      ''检查百度一下按钮的高度是否小于或等于32,应该是32,所以结果应该是pass

      .WebButton("百度一下").CheckProperty "height",micLessThanOrEqual(32)

      '检查百度一下按钮的高度是否大于或等于33,应该是32,所以结果应该是pass

      .WebButton("百度一下").CheckProperty "height",micLessThanOrEqual(33)

      ''检查百度一下按钮的高度是否等于32,应该是32,所以结果应该是Fail

      .WebButton("百度一下").CheckProperty "height",micNotEqual(32)

      '#

      '#目的:测试micGreaterThan等方法,参数为vbEmpty

      '#时间:略

      '#名称:B

      ''检查百度一下按钮的高度是否为空,实际为空,空不能做长度比较,所以结果应为fail

      .WebButton("百度一下").CheckProperty "innertext",micGreaterThan(vbEmpty)

      ''检查百度一下按钮的高度是否为空,实际为空,空不能做长度比较,所以结果应为fail

      .WebButton("百度一下").CheckProperty "innertext",micLessThan(vbEmpty)

      ''检查百度一下按钮的高度是否为空,实际为空,空不能做长度比较,所以结果应为fail

      .WebButton("百度一下").CheckProperty "innertext",micGreaterThanOrEqual(vbEmpty)

      ''检查百度一下按钮的高度是否为空,实际为空,空不能做长度比较,所以结果应为fail

      .WebButton("百度一下").CheckProperty "innertext",micGreaterThanOrEqual(vbEmpty)

      ''检查百度一下按钮的高度是否为空,实际为空,空不能做长度比较,所以结果应为fail

      .WebButton("百度一下").CheckProperty "innertext",micLessThanOrEqual(vbEmpty)

      ''检查百度一下按钮的高度是否为空,实际为空,空不能做长度比较,所以结果应为fail

      .WebButton("百度一下").CheckProperty "innertext",micLessThanOrEqual(vbEmpty)

      ''检查百度一下按钮的高度是否不为空,实际为空,所以结果应为pass

      .WebButton("百度一下").CheckProperty "innertext",micNotEqual(vbEmpty)

      '#

      '#目的:测试micGreaterThan等方法,参数为string类型

      '#时间:略

      '#名称:C

      ''因可以把下面的字符串强制转换为数字型,所以结果应与A部分检查的类型一致

      .WebButton("百度一下").CheckProperty "height",micGreaterThan("31")

      .WebButton("百度一下").CheckProperty "height",micLessThan("33")

      .WebButton("百度一下").CheckProperty "height",micGreaterThanOrEqual("32")

      .WebButton("百度一下").CheckProperty "height",micGreaterThanOrEqual("31")

      .WebButton("百度一下").CheckProperty "height",micLessThanOrEqual("32")

      .WebButton("百度一下").CheckProperty "height",micLessThanOrEqual("33")

      .WebButton("百度一下").CheckProperty "height",micNotEqual("32")

      '#

      '#目的:测试micGreaterThan等方法,参数为string类型

      '#时间:略

      '#名称:D

      ''因可以下面的字符串的内容不能强制转换为数字类型,所以下面的结果应为Fail

      .WebButton("百度一下").CheckProperty "height",micGreaterThan("a31")

      .WebButton("百度一下").CheckProperty "height",micLessThan("a33")

      .WebButton("百度一下").CheckProperty "height",micGreaterThanOrEqual("a32")

      .WebButton("百度一下").CheckProperty "height",micGreaterThanOrEqual("a31")

      .WebButton("百度一下").CheckProperty "height",micLessThanOrEqual("a32")

      .WebButton("百度一下").CheckProperty "height",micLessThanOrEqual("a33")

      '该字符串因为不能转换为数字,所以刚好满足不等的情况,故应Pass

      .WebButton("百度一下").CheckProperty "height",micNotEqual("a32")

      '#

      '#目的:测试micGreaterThan等方法,参数为bool值

      '#时间:略

      '#名称:E

      'true值无法做长度比较,故应该fail

      .WebButton("百度一下").CheckProperty "visible",micGreaterThan(true)

      'true值无法做长度比较,故应该fail

      .WebButton("百度一下").CheckProperty "visible",micLessThan(true)

      'true值无法做长度比较,但此可比较是否相等,故应pass

      .WebButton("百度一下").CheckProperty "visible",micGreaterThanOrEqual(true)

      'true值无法做长度比较,但此可比较是否相等,故应pass

      .WebButton("百度一下").CheckProperty "visible",micGreaterThanOrEqual(true)

      'true值无法做长度比较,但此可比较是否相等,故应pass

      .WebButton("百度一下").CheckProperty "visible",micLessThanOrEqual(true)

      'true值无法做长度比较,但此可比较是否相等,故应pass

      .WebButton("百度一下").CheckProperty "visible",micLessThanOrEqual(true)

      '此处比较是相等的,故应fail

      .WebButton("百度一下").CheckProperty "visible",micNotEqual(true)

'传值类型错误,故应fail

      .WebButton("百度一下").CheckProperty "visible",micNotEqual(2)

'传值类型错误,故应fail

      .WebButton("百度一下").CheckProperty "visible",micNotEqual("2")

      '#测试结束End

      .WebButton("百度一下").Click

      .Sync

   End With

   .CloseAllTabs

End With

Shit!512M的内存,执行这些检查点花了三十分钟!

如果你非常有耐心的照上面做了,并且去查看了结果的话,至少证明了两点:第一,你是一个非常有耐心的人,有耐心是做自动化测试的基本心态要求。第二,你也许已经开始理解这些方法使用的要领了,很简单但又似乎不简单,简单地说就是这些方法的使用要根据不同的属性的值的类型来进行设定的。

如果你能回顾以前我写的关于QTP检查点的文章,那么从这个方法的使用似乎可以得出一个结论:合理使用CheckProperty方法或其方法的变种,将完成大部分自定义检查点的操作,并且相对于使用插入检查点的方式,这种方式变得非常灵活。如网络上流传已久,杂交出来的方法:

'用于检查fouces光标是否位于某对象上

Public function CheckFocus (TestObject)

     If   TestObject.CheckProperty("focused","True",2) Then   

         CheckFocus = True   

     Else   

         CheckFocus = False   

     End If   

End Function

又快23:00了,3个小时似乎过得也太快了一点,关于WaitProperty方法就不说了,与CheckProperty方法非常类似,学会使用CheckProperty方法的同时当然WaitProperty方法也学会了。晚安各位。

文青山

2011-4-25


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那美那美

失业了,写文章求吃碗炒面

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值