QTP常见运行错误问题解答
上一篇 / 下一篇 2007-12-15 20:26:35 / 个人分类:—— QuickTest Pro
51Testing软件测试网{t(PGDy
51Testing软件测试网td0iKDNlPt0p51Testing软件测试网j$\)FH`A%K
1. 不能识别对象(Cannot identify object)出现了这个错误时,就表示当前被测程序的窗口中没有符合条件的对象。51Testing软件测试网nd|_p%C*p'| OgW-PV0出现这种错误,可能的原因有以下两种:51Testing软件测试网2z6CL [/ue$gyFX[$H~}\ ^^9KL^)]0>>> 对象此时在程序中没有显示或不存在。bvD#JIN }051Testing软件测试网:s9Y*R Zy#X.n-@7rn
>>> 在程序中存在该对象,但是它的描述在后来发生了改变,导致与对象仓库中存储的信息不匹配,从而QTP无法识别对象。51Testing软件测试网`.TEQZ!e[:g-y!Oy!el:\DB g!J+k0如果你正遇到“Cannot identify object”的问题,解决方法见1.1。51Testing软件测试网^\9Ga}%rU;C.k3d[X4F_(ixI:p.c$O01.1 如何去识别对象描述(Identifying Test Object Descrīption Problems) 如果你能在被测程序中看到对象,但仍出现了“Cannot Identify Object”错误信息,这就表示仓库中对象的描述与程序中对象的描述一定存在着差异。7J t/]6I_K0
D`9pS8N7G:w0 解决对象描述问题的第一步是找到差异,最简单的方法是将仓库中对象的属性值与程序中对象的属性值进行比较。(仓库中对象的属性值可在Object Repository窗口中查看,程序中对象的属性值可用Object Spy功能查看。)m4|W"kJku&qV0
[P/a5G4L i.s0比较仓库中对象的属性值与程序中对象的属性值的操作见1.3。h<2e e051Testing软件测试网 L[Q,e|S+tF
在完成比较后,是否发现存在差异?q7tC/ugW@o051Testing软件测试网 O7}Go eu/_
如果是,请参考1.4;51Testing软件测试网 x*PGNQ51Testing软件测试网2d9`0R*lv5@2v
如果否,请参考1.5。Y,g%qU8K9N9n;k0
mW6s{V g4H!t1Zd01.2 处理对象丢失问题(Solving Missing Object Problems)在运行脚本时,QTP尝试进行某种操作,而该操作的对象在程序中却没有出现,出现这种情况的原因有以下几种:51Testing软件测试网"{W(m3grA!Ob6S8V `!~5Q3t|2V0>>> 对象不再存在。对象已经被从程序中删除。51Testing软件测试网+\@#tC!?.T#z51Testing软件测试网)[]blo0R$Du'm
解决方法:见1.2.1。Xs4_z'n$fXBH051Testing软件测试网X#f3TF7c$HT
>>> 对象还没有装载。51Testing软件测试网?:b wBe7nE&vIi4u)Fg1k0解决方法:见1.2.2。51Testing软件测试网Z)t?e6XvB,]51Testing软件测试网$ib)JI8J'E&w
>>>当前的程序页面(或窗口)不正确,不是对象所在的页面(或窗口)。^8n$b/`#{i.m0
&M_!|9|"OWX0解决方法:见1.2.3。I+}\6B3?(~k]0
G*G-a.h7oXTQ/[0>>>前一个步骤没有正确执行。51Testing软件测试网w B6Oj D/aL'T3l w*Z R4iJ0解决方法:见1.2.3。51Testing软件测试网"I6k?6wmm`7\*XV9IUlOn01.2.1 解决对象不再存在的问题如果对象已经不再在被测程序中存在,则应在脚本中修改或删除相关步骤。51Testing软件测试网zHZ;Q2Z m51Testing软件测试网NYUN'ck.B;`5in2G
1.2.2 解决对象装载超时的问题如果对象丢失的原因是因为没有足够的时间装载,尝试以下解决方案:51Testing软件测试网.oS5g-H0d~\51Testing软件测试网^U|i)?N
a.对于Web对象,增加Browser Navigation Timeout(File>Setting>Web页签)时间。"fn"ct;]:rd0
Y F(ePa0b.在包括该对象的步骤前使用Wait语句,让QTP在执行该步骤之前等待一段时间。3k1zc@6si.ky'Q0
DY_ N%Gm%\d+{M01.2.3 检查前面步骤的执行情况如果是因为打开了错误的页面(或窗口)导致对象丢失问题,或因为前一步骤执行措误导致对象丢失问题,则请按以下方法检查原因:'f7|L/d1sW;U%@:m051Testing软件测试网'gP4fL8jdox~1O
a. 如果怀疑在完成脚本后,被测程序又发生了改变,则检查对象的继承关系以及对象描述。参考1.1。Oz ZuPC4yl8P051Testing软件测试网Y#xYkOB"r
b. 如果怀疑脚本错误,则检查脚本的每一个步骤。你可能是遗失了某个步骤,也可能是使用了不正确的方法或参数51Testing软件测试网Ky5qY2z^51Testing软件测试网!X H)m*Xpg%a
1.3 测试对象的属性值与Run-time对象的属性值的比较(Comparing Test Object and Run-Time Object Property Values)根据以下的步骤比较测试对象与Run-time对象的属性值:+h4tdbEil051Testing软件测试网*Abq r ]v1H/up%z
1) 进入Obecjt Repository窗口(Resources>Object Repository),选择对象。7zW\$A"mG }w7Et2_ r0
-I$io"KW5c9q02) 用笔记下对象的class以及它的各个属性及属性值。51Testing软件测试网#Ssi_mfm51Testing软件测试网W$c*JR H$n
3) 打开被测程序,并打开包含被测对象的页面或窗口。51Testing软件测试网C!AI%l:IXS f6v51Testing软件测试网:\)~+D ZVf(Z:Hq
4) 在QTP中选择菜单Tools>Object Spy或点击Object Spy按钮,打开Object Spy对话框。hL:_6R4sw3sC0
!`8b2eDm$]05) 选择“Test Object Properties”选项。51Testing软件测试网Gc$t(j?/Ep(woHZ#P7]\_Y06) 点击右上角的按钮(带有手图标的),这时QTP窗口以及Object Spy对话框都被最小化。*qlw~4_0
3k'~J+WV-^ZIA07) 在程序页面(或窗口)中点击目标对象,恢复Object Spy对话框,并在对话框中显示对象及其父对象(以树的形式显示),并在Properties页签中显示当前对象的属性及属性值。d,N3|4g8ZI2{051Testing软件测试网UCe$HlGU,y"VE
8) 这时Object Spy对话框的Properties页签中显示Run-time对象的所有属性,在此查看对象的class,以及它的属性及属性值,并将它与第2步中记下的内容进行比较。C(Ok+@_j;Mg0
bqj6k;J gsZHG+L01.4 解决对象描述存在的问题(Solving Object Descrīption Problems) 如果发现仓库中对象的属性值与程序中对象的属性值存在不同,你应该判断这个不同是个别对象的问题,还是其它同类对象也存在相同的问题。N7?KWkx,}0
6U!QTFN K$A0是所有(或多个)同类对象都存在问题吗?/t5](U*R,E)i*z(^W0
m#S3avA'u0如果是,则参考1.651Testing软件测试网0u?` {psN$ON$N:`2[2Rl*X&n1`0如果否,则参考1.7 51Testing软件测试网5x;MJc!PE@irku wfs,t3t.M/|)L01.5 关于父对象描述的识别问题(Identifying Parent Object Descrīption Problems)对象的识别还与它所继承的父对象有关。51Testing软件测试网C,a[o.P`H|A1hLN%diu ]xVPj0 如果你能在被测程序中看到对象,而且程序中对象的属性值与仓库中对象的属性值也是一致的,但仍然遭遇到了“Cannot identify object”错误,则这个错误可能与它的父对象有关(如仓库中父对象的属性值与程序中父对象的属性值不一致),也可能是仓库中的对象与程序中对象的继承关系不相同导致的。51Testing软件测试网5x*DjUt'~K{ V:G;i;cvz t\2f0要判断是继承关系中的哪个父对象出现了问题,请偿试下面的方法之一:jDt7|)FP0|.~051Testing软件测试网gZ/i_8X
>>>重新录制对象,比较新旧对象的父对象。51Testing软件测试网(B-oe*aU/hr}1X"s{6Yyn+Ry0欲了解如何完成比较,参考1.8。7z#l7ELs5S }0
n0u4\E:}E0>>>对继承关系中的每个父对象,分别插入一个Exist语句,并运行该部分脚本。51Testing软件测试网cIMd1T)?51Testing软件测试网fR!zek mp}
欲了解如果创建Exist语句,参考1.9。51Testing软件测试网|YSrsJ&G:J(h |Y0v+T5\0注:你也可以使用Object Repository窗口中的Highlight in Application功能,在被测程序中定位对象。.g#U:pS&Ih#F Y(a051Testing软件测试网5?LR!mE5r
一旦找到了存在问题的父对象,接下来偿试以下方法:I-Q%v/Y GVg051Testing软件测试网Lr4Z5gk/J}W
>>>修复存在问题的父对象的描述。方法见1.4。51Testing软件测试网 a#r1D7qD"yVu w51Testing软件测试网 vG R5\Y*W?
>>>在专家视图的模式下,查找所有继承存在问题的实例并进行修正。Yd-TsqEd/P3m051Testing软件测试网SR^JG i;Q.? w2j f
举例:1.8.1。 51Testing软件测试网+O w O obbV[So51Testing软件测试网_^8H+n2EA
1.6 解决某类对象的识别问题(Soving Object Identification Problems for a Test Object Class) 如果你发现某类对象的对象描述对于被测程序来说都不是很合理,或你预期到对象描述中的某属性值是经常变化的,你可以在Object Identification对话框中改变该类的识别属性的设置,或定义该类的Smart Identification设置并启用Smart Identification机制,这样QTP就可以唯一识别对象了。