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

[讨论] qtp回放靠什么找object?

qtp回放靠什么找object?


有时候录完脚本(web程序),回放是正常的,保存后,过几天,再回放就不成功了,提示某个object找不到,现在我终于知道是为什么了。
录web程序,目前系统中一共打开了3个ie,1个程序,从左到右依次是,ie1(登陆界面),QTP,ie2(需要录制的登陆后的页面),ie3(在ie2页面上打开的另一个页面),ie3页面上有一个按钮叫Button1。
开始录,打开ie3后点击Button1,录完后保存脚本。
脚本是browser("ie2").page("ie3").webbutton("button1");
直接回放是ok,但如果再打开一个ie窗口就会存在找不到button1的现象了,具体操作是目前已经打开的程序从左到右是ie1,QTP,ie2,再打开一个新的ie窗口,然后回放QTP的脚本,就出错。

感觉QTP 找object还必须要靠页面的顺序,一但回放的时候与录制打开的页面不一致,他就找不到需要的页面了,不知道怎么解决这个问题?

TOP

GUI的测试工具都是依赖于程序界面的.所以我们在执行一次自动化测试时,先要清理干净测试环境.一但界面上出现类似的画面,QTP就无法识别具体是哪个了.
那qtp回放靠什么找object呢?这里我来介绍一下.
先介绍一下两个对象的概念.
测试对象:     是QTP在脚本中创建的用于描述应用程序实际对象的对象。也就是放在存储库中对象。
运行时对象:  是应用程序中的实际对象,对象的方法将在运行中被执行,也就是只在运行中存在的对象。
QTP是通过测试对象来找到运行时对象.

TOP

”QTP是通过测试对象来找到运行时对象“
--------------------
既然测试对象有那么多属性,那么运行时对象就是根据这些属性(比如title等)来找对象,但实际上运行时他不是根据title属性来找的,而是先根据录制时候的程序界面顺序来找。我觉得这样很不方便。如果回放的时候忘记录制时候的顺序,就回放不成功了,有没有办法解决?qtp内部到底是怎么判断这个的?

TOP

除非你回放的时候桌面上出现了两个一样的控件,QTP无法确认到底去操作哪个控件,不然只要在QTP存储库中存在了这个对象,那QTP就能识别.跟录制的顺序没多大关系吧当然除了上下有顺序关系的之外.当然如果你要操作的窗口在你当前的打开的窗口之下,那自然QTP无法操作了.即便你自己手工也一样的啊

TOP

不是一样的控件.

如果能根据title来确定就好了

TOP

纯粹的顺序改变对QTP是没有影响的。
如果有影响,那一定是在改变了顺序的同时,也改变了存放顺序特征的属性,而且恰巧QTP也要通过此属性来识别此控件。
如果不是一样的控件,识别不出,那~~~才是正常的!

TOP

browser("ie2").page("ie3").webbutton("button1");
修改成
browser("ie*").page("ie*").webbutton("button1");
对象属性
title改用正则表达式 表示ie*

TOP

help文件这么说的


应用程序中对象的属性值会动态变化:一是每当应用程序打开时,二是基于某些条件。要使测试对象的属性值与运行时对象的属性值匹配,可以在设计测试或组件时手动修改测试对象属性,或者在运行会话期间使用 SetTOProperty 语句来修改测试对象属性。还可以使用正则表达式基于您所定义的条件或模式来标识属性值,或者用数据表参数来参数化属性值,以便在测试的每次循环期间使用不同的值(该选项不适用于组件)。
有关修改对象属性的详细信息,请参阅管理测试对象。有关参数化的详细信息,请参阅参数化值。有关正则表达式的详细信息,请参阅了解和使用正则表达式。

TOP

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