收藏 分享(赏)

无法识别对象的解决办法.doc

上传人:j35w19 文档编号:6986425 上传时间:2019-04-29 格式:DOC 页数:3 大小:40KB
下载 相关 举报
无法识别对象的解决办法.doc_第1页
第1页 / 共3页
无法识别对象的解决办法.doc_第2页
第2页 / 共3页
无法识别对象的解决办法.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、问题一:Cannot Identify ObjectQTP 运行时报错说无法识别对象,如果你的对象在对象库里面本身存在但还报出这个错误,这就表示仓库中对象的描述与程序中对象的描述一定存在着差异。 解决对象描述问题的第一步是找到差异,最简单的方法是将仓库(Object Repository)中对象的属性值与程序中对象的属性值(用 Object Spy 查看)进行比较。比较的结果:一 如果仓库和程序中对象属性有差别,两种情况1. 如果同类对象都存在此问题,则可在 Object Identification 对话框中改变该类的识别属性的设置,或定义该类的 Smart Identification 设

2、置并启用Smart Identification 机制,这样 QTP 就可以唯一识别对象了。2. 如果是单个对象存在此问题,则可以按照以下方法解决a.如果被测程序中对象描述发生了改变,并且你也清楚改变的内容,并且该改变是永久性或长期性的,你可以直接手工修改仓库中对象描述中的相关属性值。b.如果被测程序中的对象的属性值依赖于前面的步骤或其它对象,则将该属性值参数化,这样就可以使用其它步骤的输出值为属性值。c.如果属性值的组成部分中,部分是固定的,部分是动态改变的,则可以将属性值设计为正则表达式。d.如果属性值是遵循某种规则变化的,或者是不可预期的,则从对象描述中移除该属性,并向对象描述中添加一个

3、或多个属性以便于 QTP 进行对象识别。e.将仓库中相应的对象删除,采用描述性编程的方式来识别对象;(实践证明此方法最好用)二 如果仓库和程序中对象属性无差别,则说明这个错误可能与它的父对象有关(如仓库中父对象的属性值与程序中父对象的属性值不一致),也可能是仓库中的对象与程序中对象的继承关系不相同导致的。判断继承关系中哪个父对象出现问题的两种方法如下:1. 通过重新录制对象,检查到新旧对象是父对象的描述存在不同,还是它们的继承关系根本就不同。(1)如果是父对象的描述问题,则在对象仓库中修改父对象的描述。(2)如果是对象的继承关系不正确(即具有不同的父对象)引起的问题,则在脚本中找到所有使用该继

4、承关系的实例,将它们替换为正确的继承关系。例如:有一个带有 Frame 的网站,你录制了一个操作针对Image 对象“Poster”的操作步骤。在 Object Repository 窗口,你可以 Image 对象的继承关系如下所示:MyCompany(Browser)MyCompany(Page)Main(Frame)Poster(image)当你运行脚本时,网页看起来没有什么不同,但是识别 Image 对象时却出现了“Cannot identiry object”的错误提示。当你重新录制操作步骤,然后在 Object Repository 窗口中查看新的 Image 对象时,发现该对象的继

5、承关系如下所示:MyCompany(Browser)MyCompany(Page)Poster(image)从中可以看出,Frame 已经从 Web Page 中移除,所以尽管 Image对象“Poster”的描述没有发生任何改变,但它的继承关系已经改变了。在 Object Repository 窗口,你可以看到新旧 Image 对象“Poster”是两个完全不同的对象:旧的位于已经被移除的 Frame 对象之下,而新的则直接位于 Page“Mycompany”对象之下。修复这个问题,可以在脚本步骤中将旧的对象替换为新的对象。为了保持 Object Repository 窗口的整洁,你应删除那

6、些已不再存在的对象(如本例中的 Frame)。2. 创建 Exist 语句,以判断父对象的描述是否存在问题QTP 在录制发生在某个对象上的操作时,也会同时去了解对象以及它的继承关系。因此,如果在运行过程中,QTP 不能识别继承关系中的任何一个父对象,都会导致目标对象的识别失败。使用带有 Exist 方法的 Msgbox 语句,可以方便的检查出是继承关系中的哪个父对象出现了问题。假设在运行下面脚本时,你遇到了“Cannot identify Object”错误信息(但是可以确定对象仓库中 Link 对象的描述与当前程序中对象的描述是完全一致的):Browser(“Yahoo!“).Page(“Y

7、ahoo!“).Link(“Arts & Humanities“).Click你可以在该语句前面插入以下语句:Msgbox Browser(“Yahoo!“).ExistMsgbox Browser(“Yahoo!“).Page(“Yahoo!“).ExistMsgbox Browser(“Yahoo!“).Page(“Yahoo!“).Link(“Arts & Humanities“).Exist然后从头开始运行脚本,发现第 1 行语句运但是当 QTP 运行到第 2 步时,就弹出信息框,内容为“False”,表示不能找到 Page object。这就证明 Page 对象存在问题。确定了出现问

8、题的父对象以后,修复该问题。问题二:The object is not unique 一 某类对象的对象描述都不足以唯一识别对象,则可在 Object Identification 对话框中,改变该类的识别属性的设置,或定义该类的 Smart Identification 设置并启用 Smart Identification 机制,这样 QTP 就可以唯一识别对象了。二 如果只是个别对象有此问题,则找到可以将它们区别开来的一个或多个属性,并修改仓库中对象的相关属性(如向描述中添加属性等),以使 QTP 在运行时可以唯一识别它;如果它们的识别属性完全相同,则在对象描述中为对象添加一个 ordinal identifier(index或 location)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 规章制度

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报