51Testing软件测试论坛

标题: QTP中采用spy object的两种方式识别对象,结果为何不同 [打印本页]

作者: Erin_gy    时间: 2007-8-15 09:20
标题: QTP中采用spy object的两种方式识别对象,结果为何不同
现象是这样的:我要得到某个统计页面中某个td的数据,该数据是动态的,当增加一条记录后,这个数据就要相应地增加1。首先我对这个数据设置了standerda checkpoint ,spy object中采用 run-time object perporty,然后输出这个td的innertext属性的值:如下代码:

‘Browser("用人单位员工劳动合同管理系统").Page("用人单位员工劳动合同管理系统_5").WebElement("用人单位员工劳动合同管理系统").Check CheckPoint("用人单位员工劳动合同管理系统")
Dim a
Browser("用人单位员工劳动合同管理系统").Page("用人单位员工劳动合同管理系统_5").WebElement("用人单位员工劳动合同管理系统").GetROProperty("innertext")
msgbox(a)

这时的输出的结果是正确的,跟table中这个td的值是一致的。

但如果spy object中采用 test object perporty ,同样的代码,msgbox输出的结果就是一个空值(不是null而是空)

我是这样理解的:run-time object perporty是显示对象自身的属性和属性值,而test object perporty是显示该对象封装好的属性和属性值。照这样下去,采用这两种方式的输出结果应该一样呀
请高手指点一下

[ 本帖最后由 Erin_gy 于 2007-8-15 09:39 编辑 ]
作者: walker1020    时间: 2007-8-15 09:30
1,spy object 只能查看对象的属性,包括Run-time Object Properties and Test  Object Properties。你无法使用它去录制
2,在spy object中采用 test object perporty后, 相应的代码是什么? 放上来看看。
3,你的问题本质上是 Run-time Object Properties and Test  Object Properties的区别。在论坛上有相关的帖子,你可以搜索一下
作者: walker1020    时间: 2007-8-15 09:31
我想 下面的这三行代码 应该是 楼主自己写的吧:
Dim a
Browser("用人单位员工劳动合同管理系统").Page("用人单位员工劳动合同管理系统_5").WebElement("用人单位员工劳动合同管理系统").GetROProperty("innertext")
msgbox(a)
作者: Erin_gy    时间: 2007-8-15 09:37
标题: 回复 #2 walker1020 的帖子
在spy object中采用 test object perporty后,代码:
Browser("用人单位员工劳动合同管理系统").Page("用人单位员工劳动合同管理系统_5").WebElement("用人单位员工劳动合同管理系统").Check CheckPoint("用人单位员工劳动合同管理系统")
Dim a
Browser("用人单位员工劳动合同管理系统").Page("用人单位员工劳动合同管理系统_5").WebElement("用人单位员工劳动合同管理系统").GetROProperty("innertext")
msgbox(a)
对于:Run-time Object Properties and Test  Object Properties的区别,我写错了,帖子中已经修改。
spy object的确只是记录和识别对象的,因为在添加checkpoint后,需要spy object记录相应的对象,因此我这里分别采用两种不同的方式来对比结果
作者: Erin_gy    时间: 2007-8-15 09:50
标题: 回复 #3 walker1020 的帖子
对,就是自己写的。我的目的就是想看看WebElement("用人单位员工劳动合同管理系统")的innertext属性值
作者: yabest    时间: 2007-8-15 10:46
这帖子看得乱糟糟的,没看出LZ你两种方式的脚本有啥差别,好像完全一样的啊!

我猜想LZ可能是错误的以为GetROProperty取得的是run-time object perporty,GetTOProperty取的是test object perporty。

其实GetROProperty和GetTOProperty取的都是封装接口(test object perporty)
GetROProperty取的是实际对象的封装接口
GetTOProperty取的是仓库对象的封装接口
WebElement(...).object.innertext取的才是实际对象的自身接口(run-time object perporty)

QTP里的Test Object/Run-time Object的概念太容易让人混淆了!
它既用来区分仓库对象和实际对象,又用来区分对象的封装接口和自身接口。

我有个帖子《QTP识别和操作对象的原理》 对此有详细的说明

http://bbs.51testing.com/viewthread.php?tid=13554&page=1#pid369327
http://bbs.51testing.com/viewthread.php?tid=13554&page=1#pid425533
作者: Erin_gy    时间: 2007-8-15 11:05
标题: 回复 #6 yabest 的帖子
谢谢您的回复,也感谢walker1020版主的回复!
确实对test object 和run-time object 的理解有误。
在向对象仓库中添加对象时采用了两种方式来识别对象(即:test object property和run-time object property),使其输出某个td的innertext属性值。这两种方式的代码完全一样,但输出结果不一样(一个输入了正确值,另一个却输入空),感到很奇怪。
我再试试




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2