在<QTP参数化实例>一文中,讲到了运用描述性编程来进行参数化.今天我们利用另一种方法来实现类似的参数化.在不更改对象库的基础上上,运用SetTOProperty函数方法来达到同样的效果.
例:
录制打开百度搜索主页,输入11,点击搜索按纽,进入搜索后的页面,随便打开其中一个连接,然后关闭网页.录制脚本如下:
Browser("百度——全球最大中文搜索引擎").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "11"51Testing软件测试网 hO^.t rIg
Browser("百度——全球最大中文搜索引擎").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click
5|p-r @3ON115299Browser("百度——全球最大中文搜索引擎").Page("百度搜索_11").Link("CCTV.com").Click
Cy&q1NiYC p115299Browser("CCTV.com").Page("CCTV.com").Sync
'G4Db zXJ q hQV115299Browser("CCTV.com").Close51Testing软件测试网V2F LU^9c `;ls*I R B
Browser("百度——全球最大中文搜索引擎").Page("百度搜索_11").Sync
:U\([Q ~TH115299Browser("百度——全球最大中文搜索引擎").Close
现在我想做的是,能测试搜索页面上的其他link打开是否正确.那么势必要把上面蓝色字体的部分给参数化.
首先我们要在蓝色字体这句代码上面增加一句话,如下:
Browser("百度——全球最大中文搜索引擎").Page("百度搜索_11").Link("CCTV.com").SetTOProperty "属性","属性值"51Testing软件测试网7gnp8\?.V5S
Browser("百度——全球最大中文搜索引擎").Page("百度搜索_11").Link("CCTV.com").Click
SetTOProperty方法能够在脚本运行中,设置对象的属性值.而QTP识别应用程序上的对象,完全是依靠对象库中的对象来识别的.所以只要对象库中的对象属性值变掉了,QTP操作的对象也不同了.通过对该Link对象,在对象库中属性及属性值的研究发现,启决定性作用的是该对象text属性.所以只要更改这个text属性,就能让QTP点击其他Link了.
这里由于时间的关系,只做两个link的测试.继续修改脚本,变成如下:
Dim i,b
yTA q6^&W A|115299Browser("百度——全球最大中文搜索引擎").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "11"
4m&a+~'E F SM o/fp,D115299Browser("百度——全球最大中文搜索引擎").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click51Testing软件测试网M0rhH6w[
For i=1 to 2
EC8r5@ G!L.X'kCx115299 Select Case i51Testing软件测试网0Uc~^c-W
Case 1 b="11弄-软件弄堂"
l5J\,j M[V/u115299 Case 2 b="CCTV.com"
y"VC4w fO115299 End Select51Testing软件测试网Ny:C8fW c
Browser("百度——全球最大中文搜索引擎").Page("百度搜索_11").Link("CCTV.com").SetTOProperty "text",b51Testing软件测试网 V8M,?Cr7h
Browser("百度——全球最大中文搜索引擎").Page("百度搜索_11").Link("CCTV.com").Click
wq!Bmv?*y7F115299 Browser("CCTV.com").Page("CCTV.com").Sync
)^%o*S1O P'xO @J115299 Browser("CCTV.com").Close
2q$A DJi115299Next
9Mzt*Z;?!z0a115299Browser("百度——全球最大中文搜索引擎").Page("百度搜索_11").Sync
-PEs c J115299Browser("百度——全球最大中文搜索引擎").Close
在我们脚本的对象库中是没有"11弄-软件弄堂",这个link对象的.让我们看看这样修改后,能不能通过两次循环,依次点击打开名为"11弄-软件弄堂"的连接,然后关闭.接着继续点击打开名为"CCTV.com"的连接,然后关闭.结果自然是通过的,我们通过对SetTOProperty方法的运用,同样达到了参数化的要求.
如果大家想试试看的话,可以录制我们QTP自带的windows程序fight.其中这么一个WinRadioButton对象.如下图:
对于这个对象的操作,录出来来的脚本是这样的.
Window("Flight Reservation").WinRadioButton("Business").Set
粗看这个对象要实现参数化,不是很容易.但其实也方便实现.运用上面的方法,试试吧!