51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2009|回复: 8
打印 上一主题 下一主题

[原创] 求教,一个具体问题引申出的对象原理。请帮助分析。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-8-10 14:22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jandz0413 于 2011-8-10 14:56 编辑

背景:
增删改查,一个webedit控件。
新增页面,Browser("新建单据").Page("单据维护").WebEdit("单据编号")
编辑页面,Browser("维护单据").Page("单据维护").WebEdit("单据编号")
Browser的name不一样。
新增页面创建后会直接跳转到编辑页面(看起来跟没跳转一样),并将各控件创建时的值加载出来。
问题:
我需要获取.WebEdit("单据编号").GetTOPropirty("value"),这个是点击完创建后生成并显示在编辑页面的,可是取到的是空,我猜想是否是因为Browser有变化,但是对象库会并不认为这两个页面Browser的属性有差异,添加对象时会把所有控件都放在Browser("新建单据")下,所以取的是新建页面相同控件的value。请大家帮忙分析分析,这个.WebEdit("单据编号").GetTOPropirty("value")取到空到底是什么原因?
--------------------------------------------------------------------
用SPY看了一下,两个页面的Browser的openurl属性的确不一样,如果这是两个对象,那为什么向对象库添加webedit等控件的时候都加在了Browser("新建单据")下面。。
由此又有一个问题,打开IE后,测试过程中一直都是page在变化,可是有的时候不同的page会在不同的Browser下面,对象库存在多个Browser,可否将所有的page及子对象都放在一个Browser下面?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-8-10 17:24:07 | 只看该作者
1. 你用的是GetTOPropirty. 所以对象库中,"value"这个属性是什么,就显示什么. 查看运行时的属性是GetROPropirty.
2. 为什么加在Browser("新建单据")下面.
QTP添加对象库的原理,你可以看一下Tools -> Object Identification, 默认Browser只用CreateTime来区分, 如果当你进行"维护单据"时, "新建单据"这个页面已经关掉, 当前只有一个Browser, 所以CreateTime都是0, 添加的对象,就到Browser("新建单据")下了.
3. 可否可以将对象都放在Browser下面?
还是要看对象属性,和运行时的情况. 有时候为了方便,我会把默认的Browser多一个Title的属性.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2011-8-11 08:42:54 | 只看该作者
楼上讲得很详细,顶一下,顺便补充一下
Tools -> Object Identification中把Browser的属性加上openurl或者title、name啥的,在对象库中用正则表达式匹配比较通用
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2011-8-11 12:50:40 | 只看该作者
回复 2# ermine
多谢版主老大,是我没把TO和RO搞清楚。一直都是用SPY,看有什么就用什么。
但仍不太明白的是,在跑完一遍的页面上,我用SPY看,这个webedit的value,TO和RO取值是一样的啊,既然一样,TO为什么就不可以?
另外一个问题,我在网上看了看Browser,creationtime好像浏览器不关闭就不会变?还是指的是页面?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2011-8-11 12:53:46 | 只看该作者
回复 3# lyscser
谢谢回复,是否通过你说的这样,可以办到把对象都放在一个Browser下面?我想不到参数化Browser属性的应用场景。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2011-8-11 16:10:51 | 只看该作者
不可以
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2011-8-11 16:14:14 | 只看该作者
不可以
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2011-8-11 21:31:43 | 只看该作者
回复 4# jandz0413


TO是Testing Object, RO是Running Object
一般情况下是一样的,但是如果你添加对象库以后,系统对象的属性变了,那就不一样了。
RO指的是在运行中,QTP识别到对象的属性。
还是不明白,参考下google吧。。
http://www.360doc.com/content/11/0107/22/4478545_84867927.shtml
Browser的CreateTime的原理,和Index是一样的,你理解Index,就能理解CreateTime,只是QTP为了区分“一样”的对象,如果想不一样,就改默认的Object Identification
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2011-8-12 15:07:53 | 只看该作者
你可以看看对象库里的Browser对象的Description Property,是不是空的?一个属性都没有?所以,他会把所有的浏览器当作同一个对象。
你要在Object Identifier中添加浏览器的Manda Property,这样就可以识别不同的的浏览器对象。
参数化浏览器的应用场景很多,比如我在当前叶面查询出一些结果,都是每个结果都有连接,可以连接到另一页面,如果我要遍历当前叶面的结果,并且纪录链接后叶面的内容,那就要参数华浏览器了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 18:01 , Processed in 0.095735 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表