注:原文最早是发表在www.automationqa.com上面的,后来因为网站被黑而文章内容消失了,希望csdn别被黑了。
关于转载:本文为原创文章,欢迎转载,但转载需要标注出处以及保证内容的完整性,请理解写作的寂莫和苦处。
关于版权:本文不得应用于以赢利为目的的任何场景,否则本人保留相应的权利。
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