TestComplete如何识别对象

上一篇 / 下一篇  2007-09-20 16:47:01 / 个人分类:TestComplete

TestComplete如何识别对象51Testing软件测试网#N$\2T4Ok[j]

 

mw4Q bg2u'a0

陈能技51Testing软件测试网 Ik-PNx+Ln

2007-9-1951Testing软件测试网t HlD^-X$EP

 51Testing软件测试网!NL*\1\SW

GUI测试工具的基本原理就是识别出被测试的对象,记录对象的操作,加入测试逻辑的编辑,回放脚本。51Testing软件测试网2B9`_F ]f4Fa&X D)ApW

 51Testing软件测试网y jHDE-Mu+HQ

那么对测试对象的识别能力就成为一个GUI测试工具的最基本功能了。本文介绍TC是如何识别进程、窗体和控件的。51Testing软件测试网%cF8D0CA,czN%h&Y'N

 51Testing软件测试网b[ma]u

命名概念51Testing软件测试网q5Dj1}8m

为了在脚本中记录识别出来的测试对象,TC需要使用到这些对象的属性。每个对象都有很多的属性,像“class name”,“text”,“enabled”等。你可以在Object Browser窗口中看到有效的对象属性,或者使用Object Properties窗口来查看。

J#\k d S ~k],E9IO}0

 

)t#V!k _,Rx0

有些对象属性会在应用程序的运行过程中发生改变(例如edit box对象的text属性),而有些(例如窗体的handle)则是保持不变但是在两个不同的应用程序实例运行时会不一样。某些属性(例如某些应用程序的窗体类名)不会由于应用程序运行实例不一样而改变。

W5p@5@4p0

 

C"[6Jmz v$m,L ]vk0

为了使测试脚本能根据对象的属性区分不同的对象,对象的属性必须是唯一区别于其它类似的对象并且保持不变。

!kQ{&D2H(U K0X8F0

 

{ } m*mQ0

一般来说,没有哪些属性能满足所有这些要求,所以TC使用属性的组合来识别对象。例如,默认使用进程的可执行文件名和进程的index来定位进程;为了定位窗体,则使用窗体的类名、captionindex。换而言之,典型的对象名包括几部分:51Testing软件测试网H]F+N1x6X(f"~

 51Testing软件测试网d4Q+_L3I5{\'o)`a

51Testing软件测试网7A9r$hw$szz,MON

51Testing软件测试网 \H3S:j"}$y?T

 

Ay3Ok,Y~0

有些对象的名称(例如,窗口的caption或进程的index)会随着应用程序的运行而改变,因此你需要在脚本运行时使用不同的名称来定位相同的进程或窗体。使用Name Mapping技术,你可以重新定义TC默认用来定位对象的属性组合。

,Sf*jv#W;z0

 51Testing软件测试网 Vw-q!nQO/_8^{

对象的寻址定位是按一定的层次关系进行的。例如,你需要对一个窗体进行操作,首先要获取相应的进程对象;为了对某个控件进行操作,首先要获得包含该控件的窗体对象。可使用Object Browser的对象树来观察对象的层次关系。51Testing软件测试网H*{0Z!G]t

 51Testing软件测试网b ZF!s0@Ec?0s

识别和定位到对象后,TC就可以通过对象的名字属性来进一步访问它拥有的所有编程对象,通过这些对象接口来对它进行各种操作。

A6TQ*v;IE;T7J0

 

0Rx\D S7y&[%h$u9u0

进程

c-`YOH0

TC通过process编程对象来与进程交互。使用Sys.ProcessSys.WaitProcess方法来获取进程对象。这些方法使用能唯一识别操作系统进程的参数:

x}J)]1L'F/V P0

1、 进程对应的可执行文件名

D+~6Gx^0

2、 进程实例的Index。有可能相同名称的应用程序会同时有多个进程实例运行,在这种情况下,进程index可以加以区分,第一个启动的进程的index1,第二个是2,如此类推。

|k!TBV0

 51Testing软件测试网kxO0}l ph

例如下面脚本获取记事本的第二个进程实例:51Testing软件测试网(~x)T$`.xge

var
hK].C$~:iD0  p : OleVariant;51Testing软件测试网.cIU@ Vq4VmT
begin51Testing软件测试网.Fq!K!C8h"Pw
  // Obtains the object that provides scrīpting interface
*Ue^)Tq&qLR0  // to the second instance of Notepad51Testing软件测试网sNV7zc0k
  p := Sys.Process('Notepad', 2);51Testing软件测试网%N"oX5`G-UH2D,Y
end;
51Testing软件测试网as Y9}Y UPz4TiI

 

H)C*qEfY}w0

但是要注意,进程的index可能会在脚本的运行过程中改变:如果低序号index的进程终止了,那么高序号index的进程的index会相应地减小,因此进程名就改变了。51Testing软件测试网zQ8ZUQ_#Y-S~4gz r H

 51Testing软件测试网@&X7PmYY8@

如果你在使用process时省略了index参数,则TC默认使用Index1的进程,例如,Process(“Notepad”)和Process(“NotePad”,1)是指的相同进程对象。51Testing软件测试网&]'l4x8|/dy jW qu

 

^)U8D ecP E/XP,iA6y0

窗体对象

yVE!ee,x3Iy@0

TC用于识别窗体的原则依赖于被测应用程序是Open Application(开放应用程序,白盒的)还是non-Open Application(普通的,黑盒的)。

#J1i P;p6vLo u0

 

"]3B7\3b'B^:]v0

1、 Open Applications

)[5bxj6RT5]0

如果被测应用程序编译成Open Applications(开放的应用程序),则可以使用TC提供的特殊的方法来访问对象:WinFormsObjectVBObjectVCLObjectSwingObject等。51Testing软件测试网%IVV5kT` yv1IW

 51Testing软件测试网0m*^D9Qm/rM'S jA6l#_

2、 Black-Box Applications51Testing软件测试网J%L|wZ~-w:V9\

TC默认使用以下几个相对稳定的窗体属性来定位黑盒类型的应用程序:51Testing软件测试网'Y}f)~!Z,C

l        Window class name51Testing软件测试网y1c0ezQ0ey}j(j'\

l        Window caption51Testing软件测试网H!qW'D'W`

l        Window index

%RI1a3id_0

 

W N'CNS0]0

使用Process.WindowProcess.WaitWindowWindow.WindowWindow.WaitWindow方法来获得窗体对象,例如:51Testing软件测试网*DW p&g'kx6?H'F

var51Testing软件测试网4]S Q G5]B
  p, w : OleVariant;
poS#ImZ$I0begin51Testing软件测试网eH,^e dY
  p := Sys.Process('winword');51Testing软件测试网2S/cP7}So(x
  w := p.Window('OpusApp', 'Microsoft Word - *', 1)51Testing软件测试网D#c*nl:j2|
end;

J|JAQr0

 51Testing软件测试网R Q(VK7d0_ C

控件

0zk&C(i(DD0

因为操作系统的每个控件都是一个窗体,所以控件的识别方法与窗体的识别方法基本一致。51Testing软件测试网w8`+m3p,S,S;T$s

 

6B%}NPx9B(X0

Web对象

%}k [o|(E s*k.u-Qe4^0

当测试Web页面时,TC使用DOMTag对象模型来定位页面元素,DOM方式是通过Document对象模型来组织页面对象的层次关系,而Tag方式是通过HTMLTag标签来组织层次关系。51Testing软件测试网 Z,d jGM


TAG: TestComplete 测试工具 自动化测试 对象识别

 

评分:0

我来说两句

Open Toolbar