51Testing软件测试论坛

标题: 求教,一个具体问题引申出的对象原理。请帮助分析。 [打印本页]

作者: jandz0413    时间: 2011-8-10 14:22
标题: 求教,一个具体问题引申出的对象原理。请帮助分析。
本帖最后由 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下面?
作者: ermine    时间: 2011-8-10 17:24
1. 你用的是GetTOPropirty. 所以对象库中,"value"这个属性是什么,就显示什么. 查看运行时的属性是GetROPropirty.
2. 为什么加在Browser("新建单据")下面.
QTP添加对象库的原理,你可以看一下Tools -> Object Identification, 默认Browser只用CreateTime来区分, 如果当你进行"维护单据"时, "新建单据"这个页面已经关掉, 当前只有一个Browser, 所以CreateTime都是0, 添加的对象,就到Browser("新建单据")下了.
3. 可否可以将对象都放在Browser下面?
还是要看对象属性,和运行时的情况. 有时候为了方便,我会把默认的Browser多一个Title的属性.
作者: lyscser    时间: 2011-8-11 08:42
楼上讲得很详细,顶一下,顺便补充一下
Tools -> Object Identification中把Browser的属性加上openurl或者title、name啥的,在对象库中用正则表达式匹配比较通用
作者: jandz0413    时间: 2011-8-11 12:50
回复 2# ermine
多谢版主老大,是我没把TO和RO搞清楚。一直都是用SPY,看有什么就用什么。
但仍不太明白的是,在跑完一遍的页面上,我用SPY看,这个webedit的value,TO和RO取值是一样的啊,既然一样,TO为什么就不可以?
另外一个问题,我在网上看了看Browser,creationtime好像浏览器不关闭就不会变?还是指的是页面?
作者: jandz0413    时间: 2011-8-11 12:53
回复 3# lyscser
谢谢回复,是否通过你说的这样,可以办到把对象都放在一个Browser下面?我想不到参数化Browser属性的应用场景。
作者: lyscser    时间: 2011-8-11 16:10
不可以
作者: lyscser    时间: 2011-8-11 16:14
不可以
作者: ermine    时间: 2011-8-11 21:31
回复 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
作者: rogerliu0303    时间: 2011-8-12 15:07
你可以看看对象库里的Browser对象的Description Property,是不是空的?一个属性都没有?所以,他会把所有的浏览器当作同一个对象。
你要在Object Identifier中添加浏览器的Manda Property,这样就可以识别不同的的浏览器对象。
参数化浏览器的应用场景很多,比如我在当前叶面查询出一些结果,都是每个结果都有连接,可以连接到另一页面,如果我要遍历当前叶面的结果,并且纪录链接后叶面的内容,那就要参数华浏览器了。




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