|
首先声明:这时小虾的个人意见。。。。。希望各位大侠指出其中不足。。。。
QTP对象识别问题:
一:看看QTP回放原理:
## RUN
->脚本的继承关系下的对象名
(只要没乱改脚本,这里就没什么问题了)
―>对象库中的继承关系对象名
(此处可能的出错有:1,继承关系不匹配2,对象名不存在3,对象名不一致)
―>对象库中的对象属性
(此处可能的出错有:4:属性不唯一)
―>匹配被测系统中的具备该属性的对象
(此处可能的出错有:5:匹配多个,6:匹配不到,7:对象不存在)
―>根据脚本中的描述来操作该对象。
## END
二:上面问题的解决方法:
1,问题1的解决方法:
即父对象的问题:
1, 使用OBJECT SPY检查对象库父对象的属性是否唯一匹配运行是的对象的属性
2, 检查对象库中的父对象的继承位置是否与脚本中描述的一致
2, 问题2的解决方法:
需添加对象名
1, 手动添加对象名:使用ADD Objiect工具
2, 重新录制这一句脚本。
3, 问题3的解决方法
需手动修改对象名
1, 在对象库中修改对象名使其和脚本中对象名一致
2, 在脚本中修改对象名使其和对象库中对象名一致
4, 问题4的解决方法
即:给予对象库中的属性不能唯一识别运行时的对象
1, 录制前在Object Identification 增加相应对象需要录制的属性;
2, 如果被测系统有多个类似的对象,可以选中:Odinal Object 或 Index Object
3, 如果还不行,开启Smart Identification
5, 问题5的解决方法
除了发生了第4个问题外,还有可能是:
1, 运行了多个被测程序。
2, 由于对象识别无法识别,而被QTP进行低级别识别了,这时需创建虚拟化对象。
6, 问题6的解决方法
运行是对象属性的值相对于录制时属性的值发生了变化,如:依赖前面操作等,
1, 需将对象库中属性的值参数化,可以使用Globel Sheet,正则表达式
2, 将前面的发生变化的值用OUTPUT拿出来,修改脚本即可。
7, 问题7的解决方法
1, 前面操作不成功,需检查前面操作。
2, 对象没有被激活。 |
|