(转载)QTP识别和操作对象的原理
上一篇 / 下一篇 2008-05-21 17:41:00 / 个人分类:QTP
呵呵,这个文章本来是在给别人的帖《GetROProperty,GetTOProperties,GetTOProperty的区别 》回复时写的,没有独立出来。51Testing软件测试网1VM:M
u hZ.\
http://bbs.51testing.com/viewthread.php?tid=13554&page=1#pid36932751Testing软件测试网 XPy]!k*lt
写完后,在网上被多处转载。没想到今天又被转贴回51testing来了。
:i Riv*P@#F2d0
N8xE&CS0srz0虽然在精华版里,也赚了几朵花,但没独立总是不方便。所以修整了一下,独立成帖,以方便大家阅读。51Testing软件测试网9K-Q#E[/U I8}d
欢迎大家拍砖!(当然更欢迎大家送花sdlkfj5)
aG7k9Y7Z{!v051Testing软件测试网9oXk,^K7b9K1L
51Testing软件测试网GsLr f_?
一、QTP识别对象的原理(by yabest,http://www.yabest.net)
;q#@E,}:W$aO7t)k051Testing软件测试网aXb2u8m M-[9| h
QTP里的对象有两个概念,一个是Test Object(简称TO),一个是Runtime Object(简称RO)。
S&\&y'puo&} AFV0这两个概念从字面上不大好理解,也容易混淆。51Testing软件测试网d~7Tmf%D({
但从实际作用上来看,应该说TO就是是仓库文件里定义的仓库对象,RO是被测试软件的实际对象。
+gf2\u9pT/o;[0
i&U6rcNe0QTP识别对象,一般是要求先在对象仓库文件里定义仓库对象,里面存有实际对象的特征属性的值。51Testing软件测试网'r%_.|6W3OHI
然后在运行的时候,QTP会根据脚本里的对象名字,在对象仓库里找到对应的仓库对象,51Testing软件测试网8Q-u"jXcC&b
接着根据仓库对象的特征属性描述,在被测试软件里搜索找到相匹配的实际对象,最后就可以对实际对象进行操作了。51Testing软件测试网 R*BElE9s!xT0J}
0?#e)lQmi0仓库对象TO一般在录制/编写脚本时加入仓库文件,它不仅可以在录制编写时进行修改,
9I"V)mV5|9nx;KY|0也可以在运行过程中进行动态修改,以匹配实际对象。51Testing软件测试网Hq;\HBJ7M#s7{*f[
51Testing软件测试网0V#]r5x1] YK(s
和TO、RO相关的几个函数有:
-f"@.C'u#x@051Testing软件测试网c1K9oy%}
GetTOProperty():取得仓库对象的某个属性的值51Testing软件测试网&? K in3hd$u
GetTOProperties():取得仓库对象的所有属性的值
#iHlm'x7g0SetTOProperty():设置仓库对象的某个属性的值
tL.n@%L'@+?5@(zT M0
$W/k3M0x}t5HfCW0GetROProperty():取得实际对象的某个属性的值
-z1f;q s)tl3Iq0
&}y$HjNU^M0
6G~YX,Kh0理解了TO的含义,你就可以自由的用SetTOProperty()定义TO,以灵活的操作RO
o'\(jL|8i6g0
e&f_lxlBMB0比如有个测试任务,窗口上有很多待检查的记录,每条记录右边都有一个Check按钮,用来检查各条记录。51Testing软件测试网]F)q"K1_?/F
记录个数不定,所以Check按钮个数也就不定,只有一个Edit显示记录个数。51Testing软件测试网k:s0Qc8y1jU+G(A
我们要对每条记录进行检查,也就是要点击每个Check按钮。51Testing软件测试网yAl2k3Z vL2Z
但是Check按钮个数不定,不好录制,而且个数可能也很多(上百个),即使能一一录制,那也很麻烦。
$VqNm ?rgum051Testing软件测试网)CD&Px$i}4G |
那我有一个好办法,只录制一个按钮对象,它设有两个特征属性 label=OK, index=0
)e{&F
http://bbs.51testing.com/viewthread.php?tid=13554&page=1#pid36932751Testing软件测试网 XPy]!k*lt
写完后,在网上被多处转载。没想到今天又被转贴回51testing来了。
:i Riv*P@#F2d0
N8xE&CS0srz0虽然在精华版里,也赚了几朵花,但没独立总是不方便。所以修整了一下,独立成帖,以方便大家阅读。51Testing软件测试网9K-Q#E[/U I8}d
欢迎大家拍砖!(当然更欢迎大家送花sdlkfj5)
aG7k9Y7Z{!v051Testing软件测试网9oXk,^K7b9K1L
51Testing软件测试网GsLr f_?
一、QTP识别对象的原理(by yabest,http://www.yabest.net)
;q#@E,}:W$aO7t)k051Testing软件测试网aXb2u8m M-[9| h
QTP里的对象有两个概念,一个是Test Object(简称TO),一个是Runtime Object(简称RO)。
S&\&y'puo&} AFV0这两个概念从字面上不大好理解,也容易混淆。51Testing软件测试网d~7Tmf%D({
但从实际作用上来看,应该说TO就是是仓库文件里定义的仓库对象,RO是被测试软件的实际对象。
+gf2\u9pT/o;[0
i&U6rcNe0QTP识别对象,一般是要求先在对象仓库文件里定义仓库对象,里面存有实际对象的特征属性的值。51Testing软件测试网'r%_.|6W3OHI
然后在运行的时候,QTP会根据脚本里的对象名字,在对象仓库里找到对应的仓库对象,51Testing软件测试网8Q-u"jXcC&b
接着根据仓库对象的特征属性描述,在被测试软件里搜索找到相匹配的实际对象,最后就可以对实际对象进行操作了。51Testing软件测试网 R*BElE9s!xT0J}
0?#e)lQmi0仓库对象TO一般在录制/编写脚本时加入仓库文件,它不仅可以在录制编写时进行修改,
9I"V)mV5|9nx;KY|0也可以在运行过程中进行动态修改,以匹配实际对象。51Testing软件测试网Hq;\HBJ7M#s7{*f[
51Testing软件测试网0V#]r5x1] YK(s
和TO、RO相关的几个函数有:
-f"@.C'u#x@051Testing软件测试网c1K9oy%}
GetTOProperty():取得仓库对象的某个属性的值51Testing软件测试网&? K in3hd$u
GetTOProperties():取得仓库对象的所有属性的值
#iHlm'x7g0SetTOProperty():设置仓库对象的某个属性的值
tL.n@%L'@+?5@(zT M0
$W/k3M0x}t5HfCW0GetROProperty():取得实际对象的某个属性的值
-z1f;q s)tl3Iq0
&}y$HjNU^M0
6G~YX,Kh0理解了TO的含义,你就可以自由的用SetTOProperty()定义TO,以灵活的操作RO
o'\(jL|8i6g0
e&f_lxlBMB0比如有个测试任务,窗口上有很多待检查的记录,每条记录右边都有一个Check按钮,用来检查各条记录。51Testing软件测试网]F)q"K1_?/F
记录个数不定,所以Check按钮个数也就不定,只有一个Edit显示记录个数。51Testing软件测试网k:s0Qc8y1jU+G(A
我们要对每条记录进行检查,也就是要点击每个Check按钮。51Testing软件测试网yAl2k3Z vL2Z
但是Check按钮个数不定,不好录制,而且个数可能也很多(上百个),即使能一一录制,那也很麻烦。
$VqNm ?rgum051Testing软件测试网)CD&Px$i}4G |
那我有一个好办法,只录制一个按钮对象,它设有两个特征属性 label=OK, index=0
)e{&F