老生常谈--GetROProperty,GetTOProperty,SetTOProperty的区别

来源:互联网 发布:新房装修全包 知乎 编辑:程序博客网 时间:2024/06/05 17:44

这几天自学QTP,所以总结一下自己的知识。

首先,什么是RO和TO?

RO:run-time object,运行时的被测实际对象;

TO:test object,对象库中存储的测试对象。

 

什么是Get和Set?

顾名思义,Get是取得对象,这个可以从运行的对象中取,也可以从已有的被测对象库中去取;Set是进行设置,正如如果遇到实际测试对象和对象库中的对象不一致时,为了省去重新录制的工作量,我们就可以把正在运行的某个对象加入到对象库中。

 

运行时,QTP就是以对象库中对象的属性描述,寻找匹配该属性的对象,从而进行操作,仓库中的对象不仅可以在录制时进行自动添加,也可以人工spy添加,同时还支持运行时从实际对象中动态添加。

 

相关的函数:

GetTOProperty():取得仓库对象的某个属性的值
GetTOProperties():取得仓库对象的所有属性的值
SetTOProperty():设置仓库对象的某个属性的值
GetROProperty():取得实际对象的某个属性的值

仍旧拿计算器来举例:

如果我们想从datatable中取出一个数字,然后对其点击,当前,为了满足能对任意键进行点击,已经在对象库中添加了一个对象名叫AnyButton,属性为text,属性值为任意字符的正则表达式/*。

然后使用如下两句即可完成任何满足text属性的按键的点击,这里我貌似遇到一个问题,不用"text:="+cstr(a)用Anybutton的话会报错,提示匹配到多个。

window("计算器").WinButton("Anybutton").SetTOProperty "text",a
window("计算器").WinButton("text:="+cstr(a)).Click

 

再比如,要进行结果比较,从datatable中的值和实际对象属性的值的比较结果得出是否通过,就可以用如下的脚本:

If datatable.Value("Result",dtglobalsheet)=window("计算器").WinEdit("Edit").GetRoProperty("text") then
 reporter.ReportEvent micPass,"pass","pass"
end if

 

关于datatable,reporter,Set/GetToProperty,GetRoproperty的更多的用法,请参考QTP Help。

调试版本是QTP10.0,并附上部分脚本:

 

systemutil.Run "calc"
'从高位取得一个整数的值,循环点击
Sub NumGet(Num)
 Dim i,j
 i=len(Num)
    ReDim a(i-1)
 For j=0 to i-1
   a(j)=int (Num / 10 ^ (i-j-1) )
    Num=Num mod (10 ^ (i-j-1 ))
    ButtonSelect(a(j)) 
   Next
End Sub
'操作满足属性的的对象
Sub  ButtonSelect(Butt)
   Window("计算器").WinButton("anybutton").SetTOProperty "text",Butt
   Window("计算器").WinButton("text:="+cstr(Butt)).Click
End Sub

 

Dim Divisor,Dividend
Adda=datatable("Divisor",dtGlobalSheet)
Addb=datatable( "Dividend",dtGlobalSheet)
NumGet Divisor
Window("计算器").WinButton("/").Click
NumGet Dividend
Window("计算器").WinButton("=").Click
If datatable.Value("Result",dtglobalsheet)=window("计算器").WinEdit("Edit").GetRoProperty("text") then
 reporter.ReportEvent micPass,"pass","pass"
end if

 

Window("计算器").Close

 


原创粉丝点击