无法找到对象的部分解决方法

2010-04-26  代兵 

   F1:运行错误,不能识别对象(Cannot identify object)
   说明:出现了这个错误时,就表示当前被测程序的窗口中没有符合条件的对象。
   出现这种错误,可能的原因有以下两种:
   a、对象此时在程序中没有显示或不存在。
   b、在程序中存在该对象,但是它的描述在后来发生了改变,导致与对象仓库中存储的信息不匹配,从而QTP无法识别对象
   A1:如果你能在被测程序中看到对象,但仍出现了“Cannot Identify Object”错误信息,这就表示仓库中对象的描述与程序中对象的描述一定存在着差异。  解决对象描述问题的第一步是找到差异,最简单的方法是将仓库中对象的属性值与程序中对象的属性值进行比较(仓库中对象的属性值可在Object               Repository窗口中查看,程序中对象的属性值可用Object Spy功能查看)。测试对象的属性值与Run-time对象的属性值的比较(Comparing Test Object       and Run-Time Object Property Values)
根据以下的步骤比较测试对象与Run-time对象的属性值:
1)进入Obecjt Repository窗口(Resources>Object Repository),选择对象。
2)用笔记下对象的class以及它的各个属性及属性值。
3)打开被测程序,并打开包含被测对象的页面或窗口。
4)在QTP中选择菜单Tools>Object Spy或点击Object Spy按钮,打开Object Spy对话框。
5)选择“Test Object Properties”选项。
6)点击右上角的按钮(带有手图标的),这时QTP窗口以及Object Spy对话框都被最小化。
7)在程序页面(或窗口)中点击目标对象,恢复Object Spy对话框,并在对话框中显示对象及其父对象(以树的形式显示),并在Properties页签中显示当前对象的属性及属性值。
8)这时Object Spy对话框的Properties页签中显示Run-time对象的所有属性,在此查看对象的class,以及它的属性及属性值,并将它与第2步中记下的内容进行比较。
解决单个对象的描述问题(Solving Individual Test Object Descrīption Problems)
选择下列方法之一来解决对象的描述问题:
1)如果被测程序中对象描述发生了改变,并且你也清楚改变的内容,并且该改变是永久性或长期性的,你可以直接手工修改仓库中对象描述中的相关属性值。
2)如果被测程序中的对象的属性值依赖于前面的步骤或其它对象,则将该属性值参数化,这样就可以使用其它步骤的输出值为属性值。
3)如果属性值的组成部分中,部分是固定的,部分是动态改变的,则可以将属性值设计为正则表达式。
4)如果属性值是遵循某种规则变化的,或者是不可预期的,则从对象描述中移除该属性,并向对象描述中添加一个或多个属性以便于QTP进行对象识别。
5)If you can only access the information on the property values during the run session, you can create and use functions that use programmatic descrīptions to identify the object using property values retrieved earlier in the run session.
6)如果在录制过程中对象是唯一的,但现在程序中出现了两个或多个描述相同的对象,但是它们在页面(或窗口)中的位置不相同,则应在Object Properties或Object Repository窗口中,向对象描述中添加一个ordinal identifier(index或location)。
解决某类对象的识别问题(Soving Object Identification Problems for a Test Object Class)
如果你发现某类对象的对象描述对于被测程序来说都不是很合理,或你预期到对象描述中的某属性值是经常变化的,你可以在Object Identification对话框中改变该类的识别属性的设置,或定义该类的Smart Identification设置并启用Smart Identification机制,这样QTP就可以唯一识别对象了
运行错误:不能识别item(Cannot identify item)
QTP不能识别方法参数中指定的列表或树对象的item时,请确认指定的item是否存在于对象之中
解决对象装载超时的问题
如果对象丢失的原因是因为没有足够的时间装载,偿试以下解决方案:
a、对于Web对象,增加Browser Navigation Timeout(File>Setting>Web页签)时间。
b、在包括该对象的步骤前使用Wait语句,让QTP在执行该步骤之前等待一段时间。
QTP自动化的原理:
1、封装被测对象到对象库
2、对比对象库里的对象属性和运行时的真实被测对象的属性
3、对比一致后找到相应的对象
345°/3457 人阅读/0 条评论 发表评论

登录 后发表评论