热爱测试,主要研究性能测试和自动化测试方面的技术,希望与同样对测试有热情的你一同进步成长

QTP脚本调试实例--解决对象无法识别问题

上一篇 / 下一篇  2008-09-04 18:12:06 / 个人分类:功能自动化

NS.J8V+ix~hsf0   在客户那里使用QTP对某个系统的功能进行录制,回放后出现对象无法识别的错误.这里我来讲下QTP中什么时候会出现这种错误.我们知道QTP在录制过程中会把识别的对象的属性记录下来,并且是找到能唯一确定这个对象的属性记录到对象库中,在回放的时候,QTP通样去识别运行时的对象,获得他们的属性跟对象库中的对象的各种属性比较,如果找到一致的就继续往下执行,找不到就会报无法识别的错误.51Testing软件测试网}o1_'@$hL L;U)~

8u3f;~q4JH I F&K(a0   知道了报错的原因,我们就可以去排错了。51Testing软件测试网+w.JuMMZD

51Testing软件测试网pj`6d0pQT+yZR

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

#ffS#RI,n051Testing软件测试网?q-s(J*Z?t{

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

51Testing软件测试网 d^1F_Cu g9|*sC

解决办法:51Testing软件测试网o] m`%d5u

X$m5RB@ },u0   在对象库中删除该对象的“window id”等变化的属性,添加一些不变得属性来唯一标识该对象。不过,51Testing软件测试网5O&qjG/D^l9X

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

)k){0` [8c2Z:`\%X0

TAG: QTP 功能自动化 功能自动化测试

iblues的个人空间 引用 删除 iblues   /   2012-07-24 09:54:18
原帖由thinkinnight于2008-09-08 13:52:16发表
这应该不是正常情况吧,一般情况下window id是不会改变的,一般应该是动态产生的控件会产生这个问题,只是特.


如果windowId会不断变化怎么办?
引用 删除 984333046   /   2010-11-25 19:00:05
我也有遇到这个问题,可是找不到其他能唯一识别的属性的时候怎么办呢?
天空下下雨的工作间 引用 删除 天空下下雨   /   2009-03-26 16:36:26
我这用delphi编的程序window id也是变的
引用 删除 tracy-fmsi   /   2009-01-21 14:47:10
window id 这个属性确实是变化的,我以前用SilkTest就是被这个问题困扰。今天开始试用QTP,也遇到了同样的问题,恰好搜到这个帖子,解决了我的问题。谢谢博主
zibeike的个人空间 引用 删除 zibeike   /   2008-09-08 20:39:41
谢谢评论,我原来遇到过Delphi程序的这个参数也是变化的,其他的就不清楚了,而且写文章记录的就是特别的情况,呵呵
引用 删除 thinkinnight   /   2008-09-08 13:52:16
这应该不是正常情况吧,一般情况下window id是不会改变的,一般应该是动态产生的控件会产生这个问题,只是特别情况.
在做多语言的时候,window id是很重要的参数,因为其他的text是会随着语言的不同而不同的,这样一来如果使用text做identify的话,一种语言就要一个对象库了.此时一般是使用window id来做.
 

评分:0

我来说两句

Open Toolbar