TestComplete如何识别.NET对象
%_D&z3m|)K2qM:]0
yQA^"P0陈能技
X-A"O0C7]6n;{zEg02007-9-2051Testing软件测试网]+Ge/t8d/B
51Testing软件测试网~.Z8E#zA?"Oy(mX
用.NET语言编写的应用程序对于TC来说是“Open”的。本文介绍的访问.NET对象的方法适用于任何语言和工具编写的.NET程序,包括C#, Visual C++ .NET, Visual Basic .NET, J#, C#Builder or Delphi for .NET等。51Testing软件测试网)hykW CmY
51Testing软件测试网/A|j u\+a ws e z
所有的对象都可以划分为两大类:可见对象(窗体、控件等)和非可见对象。51Testing软件测试网?
SQ
hXhrf
}
]_6n*^7i({)m0可见对象(Visual Objects)
GW h
]N2R0r)l3xfa8j0对于可见对象的识别和定位,原理大致与非“Open”的应用程序一样。51Testing软件测试网T E5r lE1t-U1V
qR
zUo{0yKEI4^\z!m0要想定位.NET应用程序的窗体对象,首先要用Sys.Process方法或Sys.WaitProcess方法获取窗体所在的进程对象。
3E(ty;R8J]
F0 51Testing软件测试网$n%H M:w3~5a9O7^"B3T
获取进程对象后就可以访问应用程序的Form,使用WinFormsObject或VCLNETObject来访问。通过WinFormsObject访问由Microsoft Windows Forms Objects library创建的对象,而VCLNETObject则用于访问由Borland VCL.NET library创建的对象。当然,就像进程一样,窗体相应地有WaitWinFormObject和WaitVCLNETObject方法。与WinFormsObject或VCLNETObject方法的区别在于它们会暂停脚本执行直到窗体出现或等待的时间到为止。51Testing软件测试网7^l$M {y)V/qJ9Y
Z Er!{+W4w2RhM.Z0由WinFormsObject或VCLNETObject返回的对象包含的属性和方法与程序定义的属性和方法大体一致,但是TC可能会以特殊的方式支持。
E6o(gP a)z([a[0
4T(q"pHmuP/W2Nc0WinFormsObject或VCLNETObject方法都有三种参数方式,例如WinFormsObject的参数定义有如下三种:
`8QJ#i[HDQp0ProcessObj.WinFormsObject(Name)51Testing软件测试网!QK:w%Mo8~U6cfa
ProcessObj.WinFormsObject(ClassName, WndCaption)51Testing软件测试网`J!I6c/[6|8I\
ProcessObj.WinFormsObject(ClassName, WndCaption, Index)51Testing软件测试网U*E6Y$qr$@ltA
TO.Ay8f!f1^.o0非可见对象(Non-Visual Objects)
2K,U3W`r4^I&G
{0对于应用程序中的一个对象,只要有其它对象保持着对它的引用,则会一致存在。为了识别非可见对象,你需要找到一个能返回对它的引用的对象(可见或不可见的)的属性或方法。51Testing软件测试网3e N1GW5T5H(PH8R
s
A)P#uN!g6W,vR9Ko8k0另外,你也可以通过使用静态属性或方法来获得对象的引用,可以通过AppDomain(…).dotNET来访问。对于每一个.NET程序,TC都添加了一个AppDomain对象。这个对象与Microsoft .NET Framework的AppDomain对象是基本一致的。通过以下方式定位静态类的方法和属性:
IFEM+i(fpolH0 51Testing软件测试网R-s
L1O{
Sys.Process("MyApp").AppDomain("MyApp.exe").dotNET.namespace_name.class_name.property_name
3m4Q_ Q/Pm5_0D,Pj0 51Testing软件测试网u$VX+uY
上面的dotNET
属性让你可以访问在应用程序中定义的任何类,可以在脚本中创建类的实例。这在单元测试会很有用。51Testing软件测试网 g|%z4j~0c%^
51Testing软件测试网`3Y2ik bS