1.2.3 检查前面步骤的执行情况
如果是因为打开了错误的页面(或窗口)导致对象丢失问题,或因为前一步骤执行措误导致对象丢失问题,则请按以下方法检查原因:
a. 如果怀疑在完成脚本后,被测程序又发生了改变,则检查对象的继承关系以及对象描述。参考1.1。
b. 如果怀疑脚本错误,则检查脚本的每一个步骤。你可能是遗失了某个步骤,也可能是使用了不正确的方法或参数。
1.3 测试对象的属性值与Run-time对象的属性值的比较(Comparing Test Object and Run-Time Object Property Values)
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)
选择下列方法之一来解决对象的描述问题:
>>>如果被测程序中对象描述发生了改变,并且你也清楚改变的内容,并且该改变是永久性或长期性的,你可以直接手工修改仓库中对象描述中的相关属性值。
>>>如果被测程序中的对象的属性值依赖于前面的步骤或其它对象,则将该属性值参数化,这样就可以使用其它步骤的输出值为属性值。
>>>如果属性值的组成部分中,部分是固定的,部分是动态改变的,则可以将属性值设计为正则表达式。
>>>如果属性值是遵循某种规则变化的,或者是不可预期的,则从对象描述中移除该属性,并向对象描述中添加一个或多个属性以便于QTP进行对象识别。
>>>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.
For more information on programmatic descrīptions, see Using Programmatic Descrīptions.
>>>如果在录制过程中对象是唯一的,但现在程序中出现了两个或多个描述相同的对象,但是它们在页面(或窗口)中的位置不相同,则应在Object Properties或Object Repository窗口中,向对象描述中添加一个ordinal identifier(index或location)。
1.8 重新录制对象,以判断父对象描述是否存在问题(Re-recording an Object to Identify Parent Object Descrīption Problems)
根据下面的指引,来判断父对象的问题。
通过重新录制对象,来判断它的父对象是否存在问题:
1) 打开浏览器或程序,来到包含被测对象的页面或窗口。
2) 在关键字视图模式,选择最后一个组件(component),或在专家视图模式,将光标放在最后一个脚本步骤的下面。
3) 点击Record按钮,或选择Automation>Record。
4) 点击(或操作)页面或窗口中的目标对象。
5) 点击Stop按钮,或选择Automation>Stop,完成步骤添加。
6) 右击新添加的步骤,并选择Object Properties右键菜单。
7) 在Object Properties对话框中,点击Repository,打开Object Repository窗口,并选中了新对象。注意记下该对象的继承关系。
8) 在Object Repository窗口中找到旧的对象(即存在问题的对象),将它的继承关系与新对象的继承关系进行比较。
通过比较,可以检查到新旧对象是父对象的描述存在不同,还是它们的继承关系根本就不同。
a. 如果是父对象的描述问题,则修改父对象的描述。参见1.4.
b. 如果是对象的继承关系不正确(即具有不同的父对象)引起的问题,则在脚本中找到所有使用该继承关系的实例,将它们替换为正确的继承关系。举例:参见1.8.1。
2. 运行错误:对象不唯一(The object is not unique)
在被测页面或窗口中的同一父对象下,找到多个与仓库中对象描述相符的Run-tim对象。
请确定是只有个别对象存在此问题,还是此类对象的所有对象(或部分对象)存在此问题。
此类对象的所有对象(或部分对象)都存在此问题吗?如果是,参考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)
查看当前对象的描述,并偿试在程序中找到其它具有相同描述的对象并查看它们的描述。
>>>如果你找到了可以将它们区别开来的一个或多个属性,则修改仓库中对象的相关属性(如向描述中添加属性等),以使QTP在运行时可以唯一识别它。
>>>如果它们的识别属性完全相同,则在对象描述中为对象添加一个ordinal identifier(index或location)。
3. 运行错误:找不到父对象(Parent not found)
识别对象时,会先识别它的父对象是否正确。如果遇到“Parent not found”的错误信息,请偿试以下解决方法:
>>>修复出现问题的父对象的描述。参见1.4。
>>>在脚本中找到继承关系不正确的实例,并修改为正确的继承关系。例如1.8.1。