1、 QTP的录制过程:
(1) 定位用于描述当前操作对象的测试对象类,并创建相应的测试对象。
(2) 读取当前操作对象属性的当前值,并存储一组属性和属性值到测试对象中。
(3) 为测试对象创建一个有别于其他对象的名称,通常使用一个突出属性的值,如text值。
(4) 记录在对象上执行的操作。
2、 QTP的回放过程
(1) 根据脚本中对象的名称在对象库(OBJECT REPOSITORY)中查找相应的对象。
(2) 读取对象的描述,即对象的属性和属性值。
(3) 基于对象的描述,QTP在被测试应用程序中查找相应的对象。
(4) 执行相关的操作。
与对象相关的四个函数分别如下:
GetTOProperty():取得仓库对象的某个属性的值
GetTOProperty():取得仓库对象的所有属性的值
SetTOProperty():设置仓库对象的某个属性的值
GetROProperty():取得实际对象的某个属性的值
取QTP的Sample-flight实例,录制登录界面,用户名任意,密码为:mercury
其中:
按下登录确认按钮的脚本是:
Dialog("Login").WinButton("OK").Click
在该句前面添加脚本:
'读取运行时实际对象的属性值text
msgbox Dialog("Login").WinButton("OK").GetROProperty("text")
'读取仓库对象的属性值text
msgbox Dialog("Login").WinButton("OK").GetTOProperty("text")
'设置仓库对象的属性值text为123
Dialog("Login").WinButton("OK").SetTOProperty "text","123"
'读取运行时实际对象的属性值text
msgbox Dialog("Login").WinButton("OK").GetTOProperty("text")
'读取仓库对象的属性值text
msgbox Dialog("Login").WinButton("OK").GetROProperty("text")
回放时,头三句MSGBOX分别打印出:OK,OK,123
执行到第四句MSGBOX时,系统报错,见下图。
分析报错的原因:
QTP运行回放期间在对象库中搜索WinButton对象,通过名称“OK”来查找其“描述”。
QTP根据找到的“描述”,在被测试应用程序中查找WinButton对象,该对象带有text属性为“OK”,找到对象后将对其执行Click方法。
因此:
msgbox Dialog("Login").WinButton("OK").GetROProperty("text")之所以会报错,是因为QTP根据name去找对象库的对象,找到后,获取其属性text,再去实际系统中找匹配的对象,由于在这步之前已经把仓库对象text的属性设置为123,因此QTP在实际系统中就找不到text=123的对象了,系统就报错,说找不到对象。
再试下这个
msgbox Dialog("Login").WinButton("text:=OK").GetROProperty("text")
打印出来的是OK
这句是描述性编程,QTP不需要去对象库中找仓库对象再进行匹配,直接在实际系统中根据text=OK去找对象,因此可以执行通过。