google搜索 51Testing站内搜索                    软件测试门户 | 软件测试培 训 | 文章资料精选 | 软件测试论坛 | 软件测试博客 | 测试招聘求职 
打印

关于GetTOProperty和GetROProperty

关于GetTOProperty和GetROProperty


刚试了一个脚本是个自带的例子.脚本是:
Dim  getusername
SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)
getusername=Dialog("Login").WinEdit("Agent Name:").GetTOProperty("text")
msgbox(getusername)
Dialog("Login").WinEdit("Password:").SetSecure DataTable("password", dtGlobalSheet)
Dialog("Login").VirtualObject("object").Click 139,169

在对象库中:我将Agent name 这个对象的属性text 设置为1,如果用getusername=Dialog("Login").WinEdit("Agent Name:").GetTOProperty("text"),此时msgbox(getusername)返回为1.但如果我用的是getusername=Dialog("Login").WinEdit("Agent Name:").GetROProperty("text"),此时运行到登陆名的时候就运行不下去,这是为什么?对了,还有就是我在这个时候把Text参数化为username,目的就是得到参数化后运行时的登陆名,但是不知道怎么了运行不下去了?GetROProperty和GetTOProperty在用法上有什么不同吗?

TOP

实践是检验真理的唯一标准。

TOP

这两个的区别我明白咯。但在用的时候为什么会出现我说描述的问题呢?用获得测试对象的时候是没问题的,但获得运行时对象却运行不下去呢?

TOP

运行不下去,是怎么一个情况?

TOP

可能我在理解的时候有问题。现在想问一下这个问题:对象库中有属性和值。对于这个例子中的Agent Name:这个对象他一个属性为nativeclass 值为Edit.他是不是一个可编辑的属性。也就是说我设置为:Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)那他的值是不是就变为DataTable("username", dtGlobalSheet)中设置的值。我的目的也是得到这个值。但我用Dialog("Login").WinEdit("Agent Name:").GetROProperty("nativeclass")得到的始终都是Edit. 我的理解是不是有问题??

TOP

其实是你没找准属性,Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)经过这句话操作后,实际上是给这个测试对象所针对的应用程序上的运行时对象的text属性给赋了一个值.这个时候你在通过Dialog("Login").WinEdit("Agent Name:").GetROProperty("text")就能得到这个值了

TOP

非常感谢。恩果然是没找对属性。对了,那nativeclass 属性后面的属性值Edit是不是表示可编辑的,attached text这个属性后面的属性值Agent Name:是不是就是表示他的这个对象的名字?

TOP

nativeclass属性,是表明这个对象的类别.表示名为Agent Name:的文本框是一个可以编辑输入值的Edit框

TOP

多谢。还有一个问题:
dim  a
Dim b
SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").WinEdit("Agent Name:").Set "mercury"
Dialog("Login").WinEdit("Password:").SetSecure "45a33043f58a82a4552fb2c7368281775b80644a"
a=Dialog("Login").WinEdit("Agent Name:").GetROProperty("text")
msgbox(a)
b=Dialog("Login").WinEdit("Agent Name:").SetTOProperty ("text" ,"1")
msgbox(text)
Dialog("Login").VirtualObject("object").Click 115,168
Window("Flight Reservation").Close
按我的想法此时B返回的应该是1但为什么返回的是空?

TOP

msgbox(text)你这么返回,当然无法返回出这个text值了.写错了吧
Dialog("Login").WinEdit("Agent Name:").SetTOProperty ("text" ,"1")
先赋值,再取值啊
b=Dialog("Login").WinEdit("Agent Name:").GetTOProperty("text")
然后再返回,msgbox(b)

TOP

恩,我Copy错了,但用msgbox(b)返回的还是空的?知道为什么吗?

TOP

>这两个的区别我明白咯。但在用的时候为什么会出现我说描述的问题呢?用获得测试对象的时候>是没问题的,但获得运行时对象却运行不下去呢?

楼主的概念一团糟

TO是仓库文件里定义的仓库对象,RO是被测试软件的实际对象。

TO属性你可以随意设置和获取,你设置了什么,获取的也是什么,跟实际对象无关,不依赖实际对象,被测对象不存在也没关系。

RO是实际对象,它要根据仓库对象TO的定义,在被测软件里寻找相应的实际对象,然后GetROProperty就会返回此实际对象的属性值。

>>在对象库中:我将Agent name 这个对象的属性text 设置为1
你运行不下去,就是因为你将TO的Text属性设置为1,但是没有一个RO(实际对象)的text是1,QTP就一直寻找,所以跑不下去了。一直找不到的话,过一会就会超时,QTP就会报错了。

TOP

你调试一下看看,按道理把text属性给设置了一个值,应该能取到的啊
Dialog("Login").WinEdit("Agent Name:").SetTOProperty "text" ,"1"
改一下看看

[ 本帖最后由 xiaonan 于 2007-1-9 16:38 编辑 ]

TOP

非常感谢你们两位让我学到不少.

TOP

要好好学了

TOP

先看看在说,好东西大家看

TOP

先看看在说,好东西大家看

TOP

先看看在说,好东西大家看

TOP

 
当前时区 GMT+8, 现在时间是 2008-10-14 16:51Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹