1.4 解决对象描述存在的问题(Solving Object Descrīption Problems)
如果发现仓库中对象的属性值与程序中对象的属性值存在不同,你应该判断这个不同是个别对象的问题,还是
其它同类对象也存在相同的问题。
是所有(或多个)同类对象都存在问题吗?
如果是,则参考1.6
如果否,则参考1.7
1.5 关于父对象描述的识别问题(Identifying Parent Object Descrīption Problems)
对象的识别还与它所继承的父对象有关。
如果你能在被测程序中看到对象,而且程序中对象的属性值与仓库中对象的属性值也是一致的,但仍然遭遇到了“Cannot identify object”错误,则这个错误可能与它的父对象有关(如仓库中父对象的属性值与程序中父对象的属性值不一致),也可能是仓库中的对象与程序中对象的继承关系不相同导致的。
要判断是继承关系中的哪个父对象出现了问题,请偿试下面的方法之一:
1、重新录制对象,比较新旧对象的父对象。
欲了解如何完成比较,参考1.8。
2、对继承关系中的每个父对象,分别插入一个Exist语句,并运行该部分脚本。
欲了解如果创建Exist语句,参考1.9。
注:你也可以使用Object Repository窗口中的Highlight in Application功能,在被测程序中定位对象。
一旦找到了存在问题的父对象,接下来偿试以下方法:
1、修复存在问题的父对象的描述。方法见1.4。
2、在专家视图的模式下,查找所有继承存在问题的实例并进行修正。
举例:1.8.1。
1.6 解决某类对象的识别问题(Soving Object Identification Problems for a Test Object Class)
如果你发现某类对象的对象描述对于被测程序来说都不是很合理,或你预期到对象描述中的某属性值是经常变化的,你可以在Object Identification对话框中改变该类的识别属性的设置,或定义该类的Smart Identification设置并启用Smart Identification机制,这样QTP就可以唯一识别对象了。
1.7 解决单个对象的描述问题(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)。