Salina 发表于 2007-2-27 11:39:05

我有一个问题想问一下

我已经明白了:
GetTOProperty():取得仓库对象的某个属性的值
GetROProperty():取得实际对象的某个属性的值

但是我不明白为什么Mercury要用GetTOProperty()这个方法.
GetTOProperty()这个方法有没有什么特别的用处呢?

因为GetTOProperty()是拿到仓库对象里的有限的几个属性值,如果是仓库对象里没有出现的属性它拿到的就是空值.
而GetROProperty()则可以拿到所有属性在运行时的值.
可以说GetTOProperty()相当于是GetROProperty()的一个子集.

GetTOProperty()的属性值总是和GetROProperty()的属性值是相等的. 它们两个是不会不相等的吧.
因为仓库对象里的属性值是用来识别对象的, 所以GetROProperty()的属性值也一定会是这个GetTOProperty()的属性值.

所以我不知道为什么Mercury会有GetTOProperty()这个方法,它还有什么特别的用处吗?
或者大家有没有遇到一种情况: 用GetTOProperty()可以做一些有价值的事情?

yabest 发表于 2007-3-1 16:10:36

GetTOProperpy()的结果和GetROProperpy()并不一定是一样的
GetTOProperpy()就是你在仓库文件里设置的值,它的值可以含有通配符,可以匹配几种值,如同时匹配英文和中文

如有仓库对象JavaWindow("MyTest).JavaButton("Cancel"),设置其label属性为"Cancel|取消",这样就能通配英文和中文版本的界面
JavaWindow("MyTest).JavaButton("Cancel").GetTOProperty("label")的值,不管测试英文版还是中文版系统,都是"Cancel|取消"
JavaWindow("MyTest).JavaButton("Cancel").GetROProperty("label")的值,测英文版系统时就是"Cancel",测中文版系统时就是"取消"


GetTOProperpy确实用处不大,不像SetTOProperpy和GetROProperpy那么有用。
仓库对象的属性是自己设置的,一般没必要读取它。
不过作为接口QTP还是要提供的,可能有些特殊的地方需要用到GetTOProperpy


比如有些软件界面较乱,一些文字的大小写、前后带空格经常调整,为了兼容这些大小写和前后带空格的情况,写一个小函数,自动适应这些情况。


’函数功能:取Edit里的文字,能自动适应Edit前的标题的大小写和带空格的变化
Function GetEditText(EditObject)

   oldTOValue = EditObject.GetTOProperty("attached text")
   newTOValue = oldTOValue + "|" + LCase(oldTOValue) + "|" + UCase(oldTOValue) + "|" + Trim(oldTOValue)
   call EditObject.SetTOProperty("attached text", newTOValue)
   
   curText = EditObject.GetROProperty("text")

   GetEditText = curText
   
End Function

rita.l 发表于 2007-3-15 10:27:59

wonderful!
虽然我不能完全明白里面的意思,但是我已经在里面获取了我要的信息了。

thanks very much!!

catlovfish 发表于 2007-3-19 15:51:30

yabest, thanks for your detailed description.
That's so amazing!

chbhaha 发表于 2007-3-27 11:01:49

实践中再去学习

Eagle1983 发表于 2007-3-29 11:14:17

但是我们怎么知道对象都有哪些封装接口和自身接口呢?
其实很简单,用对象查看器(Object Spy)查看对象,在查看窗口里有列出这些接口,包括属性和方法。
窗口中间有选择栏让你选择Run-time Object或者Test Object,
当你选择Run-time Object时,它显示的就是对象的自身接口(自身的属性和方法)
当你选择Test Object时,它显示的就是对象的封装接口(封装的属性和方法)

使用遨游浏览器
我用SPY 察看了一下www.163.com 输入用户名那个编辑框 结果没有Run-time Object 的属性 ,是不是就不能使用.object.属性 ?
参考图片1.jpg
后来 用IE打开163的网页一试就出来了,奇怪!~
参考图片2.jpg
难道测试时只能用IE就不能用其他的浏览器么?

[ 本帖最后由 Eagle1983 于 2007-3-29 11:34 编辑 ]

dandan 发表于 2007-3-29 11:30:30

学到了,谢谢。。。。。。。。。

yabest 发表于 2007-3-29 15:37:30

原帖由 Eagle1983 于 2007-3-29 11:14 发表 http://bbs.51testing.com/images/common/back.gif

使用遨游浏览器
我用SPY 察看了一下www.163.com 输入用户名那个编辑框 结果没有Run-time Object 的属性 ,是不是就不能使用.object.属性 ?
参考图片1.jpg
后来 用IE打开163的网页一试就出来了,奇怪!~
...

估计不行,QTP内置的Web插件只是针对IE的,如果要测试遨游浏览器,可能得有相应的插件才行。
想来应该没有遨游插件吧!

Eagle1983 发表于 2007-3-30 15:23:45

yabest 看了你的回复 深受启发阿 。送你三朵鲜花

wuxiaoqin 发表于 2007-5-3 12:59:40

sdlkfj2 sdlkfj2 sdlkfj2 sdlkfj2 44

allenzgw 发表于 2007-5-20 18:36:09

回帖,是为了抢分

premiumdue 发表于 2007-5-29 15:26:20

回复 #1 lovetest6 的帖子

继续学习

xzl_kl 发表于 2007-6-22 10:23:09

好好看一下!

刘洪鹏 发表于 2007-7-2 17:17:42

我咋越来越害怕了呢你们咋都那么强呢压力啊

紫慕 发表于 2007-7-4 17:42:59

强!!

蝈蝈1219 发表于 2007-8-1 17:00:03

太感谢了,呵呵,终于明白了,

three116 发表于 2007-8-16 16:14:16

真是高手重重 啊!不怕QTP用不好了 !sdlkfj3

chensynge 发表于 2007-8-21 16:28:52

yabest 强人

pengjuan0713 发表于 2007-8-22 18:08:57

大家讨论得很激烈。我把这些回答收藏了。谢谢。学习中。。。。。。

andycai 发表于 2007-8-23 12:07:38

回复 #14 stomic 的帖子

学习中
页: 1 [2] 3 4 5
查看完整版本: GetROProperty,GetTOProperties,GetTOProperty的区别