“天街小雨润如酥,草色遥看近却无。最是一年春好处,绝胜烟柳满皇都。”读一首古诗,心情也随之平静下来

"Cannot identify object" QTP不能识别对象问题的解决方案

上一篇 / 下一篇  2008-02-25 15:30:15 / 个人分类:测试工具

1.8.1举例
假设有一个带有Frame的网站,你录制了一个操作针对Image对象“Poster”的操作步骤。在Object Repository窗口,你可以Image对象的继承关系如下所示:
MyCompany
Browser
      MyCompany
Page
          Main(Frame)
               Poster(image)
当你运行脚本时,网页看起来没有什么不同,但是识别Image对象时却出现了“Cannot identiry object”的错误提示。当你重新录制操作步骤,然后在Object Repository窗口中查看新的Image对象时,发现该对象的继承关系如下所示:
MyCompany
Browser
      MyCompany
Page
           Poster(image)
从中可以看出,Frame已经从Web Page中移除,所以尽管Image对象“Poster”的描述没有发生任何改变,但它的继承关系已经改变了。
Object Repository窗口,你可以看到新旧Image对象“Poster”是两个完全不同的对象:旧的位于已经被移除的Frame对象之下,而新的则直接位于PageMyCompany”对象之下。
修复这个问题,可以在脚本步骤中将旧的对象替换为新的对象。
为了保持Object Repository窗口的整洁,你应删除那些已不再存在的对象(如本例中的Frame)。
1.9创建Exist语句,以判断父对象的描述是否存在问题
QTP
在录制发生在某个对象上的操作时,也会同时去了解对象以及它的继承关系。因此,如果在运行过程中,QTP不能识别继承关系中的任何一个父对象,都会导致目标对象的识别失败。
使用带有Exist方法的MsgBox语句,可以方便的检查出是继承关系中的哪个父对象出现了问题。
假设在运行下面脚本时,你遇到了“Cannot identify Object”错误信息(但是可以确定对象仓库中Link对象的描述与当前程序中对象的描述是完全一致的):
Browser("Yahoo!").Page("Yahoo!").Link("Arts & Humanities").Click
你可以在该语句前面插入以下语句:
Msgbox Browser("Yahoo!").Exist
Msgbox Browser("Yahoo!").Page("Yahoo!").Exist
Msgbox Browser("Yahoo!").Page("Yahoo!").Link("Arts & Humanities").Exist
然后你从头开始运行脚本,发现第1行语句运行成功,并且弹出信息框,内容为“True”。
但是,当QTP运行到第2步时,就弹出信息框,内容为“False”,表示不能找到Page object。这就证明Page对象存在问题。
确定了出现问题的父对象以后,修复该问题。参见1.4
2.        运行错误:对象不唯一(The object is not unique
在被测页面或窗口中的同一父对象下,找到多个与仓库中对象描述相符的Run-time对象。
请确定是只有个别对象存在此问题,还是此类对象的所有对象(或部分对象)存在此问题。
此类对象的所有对象(或部分对象)都存在此问题吗?
如果是,参考2.1
如果否,参考2.2
2.1为某对象类设置能唯一识别对象的描述规则(Configuring Unique Test Object Descrīptions for a Test Object Class
如果你发现某类对象的对象描述都不足以唯一识别对象,你可以在Object Identification对话框中,改变该类的识别属性的设置,或定义该类的Smart Identification设置并启用Smart Identification机制,这样QTP就可以唯一识别对象了。
2.2设置通唯一识别对象的对象描述(Creating a Unique Test Object Descrīption for an Object
查看当前对象的描述,并尝试在程序中找到其它具有相同描述的对象并查看它们的描述。
l           
如果你找到了可以将它们区别开来的一个或多个属性,则修改仓库中对象的相关属性(如向描述中添加属性等),以使QTP在运行时可以唯一识别它。
l           
如果它们的识别属性完全相同,则在对象描述中为对象添加一个ordinal identifierindexlocation)。
3.        运行错误:找不到父对象(Parent not found
识别对象时,会先识别它的父对象是否正确。如果遇到“Parent not found”的错误信息,请尝试以下解决方法:
l           
修复出现问题的父对象的描述。参见1.4
l           
在脚本中找到继承关系不正确的实例,并修改为正确的继承关系。例如1.8.1
4.        运行错误:无效的参数(Invalid arguments
一个或多个方法的参数是无效的。
参数无效可能是参数类型错误,也可能是参数个数不正确。
根据以下建议,找到方法的正确语法:
l           
Keyword模式,如果方法包括参数,则在Value栏会显示该方法的参数提示。
l           
Expert模式,如果方法包括参数,则当你插入方法然后按下Shift+Ctrl+Space键时,QTP会显示该方法的参数的提示信息。(注:只有在Editor Options对话框的General页签中打开了Statement completion功能时才可以看到参数的提示信息。)
5.        运行错误:不能识别itemCannot identify itemQTP不能识别方法参数中指定的列表或树对象的item时,请确认指定的item是否存在于对象之中。
l           
如果item不存在,则删除相关脚本步骤,或修改item

 


TAG: 测试工具

 

评分:0

我来说两句

Open Toolbar