TestComplete如何识别.NET对象
上一篇 / 下一篇 2007-09-20 22:08:21 / 个人分类:TestComplete
TestComplete如何识别.NET对象
陈能技51Testing软件测试网6]@ c-~x} v
2007-9-2051Testing软件测试网*YR!j@qP
用.NET语言编写的应用程序对于TC来说是“Open”的。本文介绍的访问.NET对象的方法适用于任何语言和工具编写的.NET程序,包括C#, Visual C++ .NET, Visual Basic .NET, J#, C#Builder or Delphi for .NET等。51Testing软件测试网5W2C] a Gy{
所有的对象都可以划分为两大类:可见对象(窗体、控件等)和非可见对象。51Testing软件测试网;[8q,e@yc?9}|
可见对象(Visual Objects)
对于可见对象的识别和定位,原理大致与非“Open”的应用程序一样。
W WD*WB$v0
要想定位.NET应用程序的窗体对象,首先要用Sys.Process方法或Sys.WaitProcess方法获取窗体所在的进程对象。51Testing软件测试网fu8\ai+Sm$u
获取进程对象后就可以访问应用程序的Form,使用WinFormsObject或VCLNETObject来访问。通过WinFormsObject访问由Microsoft Windows Forms Objects library创建的对象,而VCLNETObject则用于访问由Borland VCL.NET library创建的对象。当然,就像进程一样,窗体相应地有WaitWinFormObject和WaitVCLNETObject方法。与WinFormsObject或VCLNETObject方法的区别在于它们会暂停脚本执行直到窗体出现或等待的时间到为止。51Testing软件测试网0@MI-{1Lgmk+y6x9f
由WinFormsObject或VCLNETObject返回的对象包含的属性和方法与程序定义的属性和方法大体一致,但是TC可能会以特殊的方式支持。
b[ th&^Jy3R0
WinFormsObject或VCLNETObject方法都有三种参数方式,例如WinFormsObject的参数定义有如下三种:51Testing软件测试网S+d{vy't~
ProcessObj.WinFormsObject(Name)
ProcessObj.WinFormsObject(ClassName, WndCaption)
4J1Ga]+a9N7a PB?)L0ProcessObj.WinFormsObject(ClassName, WndCaption, Index)51Testing软件测试网;t3r:r/v2n)F;wvh*T
非可见对象(Non-Visual Objects)
对于应用程序中的一个对象,只要有其它对象保持着对它的引用,则会一致存在。为了识别非可见对象,你需要找到一个能返回对它的引用的对象(可见或不可见的)的属性或方法。51Testing软件测试网uB'zmK1q&f
另外,你也可以通过使用静态属性或方法来获得对象的引用,可以通过AppDomain(…).dotNET来访问。对于每一个.NET程序,TC都添加了一个AppDomain对象。这个对象与Microsoft .NET Framework的AppDomain对象是基本一致的。通过以下方式定位静态类的方法和属性:
~#e\A ^-n0
Sys.Process("MyApp").AppDomain("MyApp.exe").dotNET.namespace_name.class_name.property_name