51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3005|回复: 7
打印 上一主题 下一主题

[原创] qtp回放靠什么找object?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-6-14 14:16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时候录完脚本(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还必须要靠页面的顺序,一但回放的时候与录制打开的页面不一致,他就找不到需要的页面了,不知道怎么解决这个问题?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-6-15 13:52:12 | 只看该作者
”QTP是通过测试对象来找到运行时对象“
--------------------
既然测试对象有那么多属性,那么运行时对象就是根据这些属性(比如title等)来找对象,但实际上运行时他不是根据title属性来找的,而是先根据录制时候的程序界面顺序来找。我觉得这样很不方便。如果回放的时候忘记录制时候的顺序,就回放不成功了,有没有办法解决?qtp内部到底是怎么判断这个的?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-6-15 14:18:56 | 只看该作者
除非你回放的时候桌面上出现了两个一样的控件,QTP无法确认到底去操作哪个控件,不然只要在QTP存储库中存在了这个对象,那QTP就能识别.跟录制的顺序没多大关系吧当然除了上下有顺序关系的之外.当然如果你要操作的窗口在你当前的打开的窗口之下,那自然QTP无法操作了.即便你自己手工也一样的啊
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-6-16 10:58:00 | 只看该作者
不是一样的控件.

如果能根据title来确定就好了
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-6-23 20:32:12 | 只看该作者
纯粹的顺序改变对QTP是没有影响的。
如果有影响,那一定是在改变了顺序的同时,也改变了存放顺序特征的属性,而且恰巧QTP也要通过此属性来识别此控件。
如果不是一样的控件,识别不出,那~~~才是正常的!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-7-3 12:58:50 | 只看该作者
browser("ie2").page("ie3").webbutton("button1");
修改成
browser("ie*").page("ie*").webbutton("button1");
对象属性
title改用正则表达式 表示ie*
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-7-3 13:02:55 | 只看该作者

help文件这么说的

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

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-8 21:47 , Processed in 0.065834 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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