在客户那里使用QTP对某个系统的功能进行录制,回放后出现对象无法识别的错误.这里我来讲下QTP中什么时候会出现这种错误.我们知道QTP在录制过程中会把识别的对象的属性记录下来,并且是找到能唯一确定这个对象的属性记录到对象库中,在回放的时候,QTP通样去识别运行时的对象,获得他们的属性跟对象库中的对象的各种属性比较,如果找到一致的就继续往下执行,找不到就会报无法识别的错误.

   知道了报错的原因,我们就可以去排错了。

   1.看报错的对象名字在对象库中是否存在.

   2.如果存在看对象的属性是否跟运行时识别的对象的属性一致,可以使用Object Spy来识别运行时出现的对象的属性。在这一步里,我发现了报错的对象在对象库中的属性中有“window id”这个属性。大家都知道这个属性在每次窗体创建后都是变化的,因此,该对象无法识别的错误是因为在对象库中有个变化的对象属性来标示这个对象,运行的时候这个属性跟录制时的不一定,所以就找不到了。

解决办法:

   在对象库中删除该对象的“window id”等变化的属性,添加一些不变得属性来唯一标识该对象。不过,

如果对象库中的很多对象都有“window id”这个属性,我需要把对象库中这些对象属性都进行编辑,会很费时间.这里可以使用QTP的Object Identification,找到相应需要修改的对象类型,把它的必选和可选属性中可能会变化的属性去掉即可,即本例中把"window id”去掉,并且勾选上"Enable Smart Identification".