千家信息网

TestComplete识别对象原理

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,对测试对象的识别能力就成为一个GUI测试工具的最基本功能了。本文介绍TestComplete是如何识别进程、窗体和控件的。命名概念:为了在脚本中记录识别出来的测试对象,TC需要使用到这些对象的属性。每
千家信息网最后更新 2025年12月01日TestComplete识别对象原理

测试对象的识别能力就成为一个GUI测试工具的最基本功能了。本文介绍TestComplete是如何识别进程、窗体和控件的。


命名概念:

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

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

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

  一般来说,没有哪些属性能满足所有这些要求,所以TC使用属性的组合来识别对象。例如,默认使用进程的可执行文件名和进程的index来定位进程;为了定位窗体,则使用窗体的类名、caption、index。换而言之,典型的对象名包括几部分:

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

  对象的寻址定位是按一定的层次关系进行的。例如,你需要对一个窗体进行操作,首先要获取相应的进程对象;为了对某个控件进行操作,首先要获得包含该控件的窗体对象。可使用Object Browser的对象树来观察对象的层次关系。

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

  1、进程

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

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

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

  例如下面脚本获取记事本的第二个进程实例:

  var p : OleVariant;
  begin
   // Obtains the object that provides scrīpting interface
   // to the second instance of Notepad
   p := Sys.Process('Notepad', 2);
  end;


  但是要注意,进程的index可能会在脚本的运行过程中改变:如果低序号index的进程终止了,那么高序号index的进程的index会相应地减小,因此进程名就改变了。

  如果你在使用process时省略了index参数,则TC默认使用Index为1的进程,例如,Process("Notepad")和Process("NotePad",1)是指的相同进程对象。


  2、窗体对象

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

  1>、Open Applications

  如果被测应用程序编译成Open Applications(开放的应用程序),则可以使用TC提供的特殊的方法来访问对象:WinFormsObject,VBObject,VCLObject。SwingObject等。

  2>、Black-Box Applications

 TC默认使用以下几个相对稳定的窗体属性来定位黑盒类型的应用程序:

 l Window class name

 l Window caption

 l Window index

  使用Process.Window,Process.WaitWindow,Window.Window和Window.WaitWindow方法来获得窗体对象,例如:

  var p, w : OleVariant;
  begin
   p := Sys.Process('winword');
   w := p.Window('OpusApp', 'Microsoft Word - *', 1)
  end;

  3、控件

  因为操作系统的每个控件都是一个窗体,所以控件的识别方法与窗体的识别方法基本一致。


  4、Web对象

  当测试Web页面时,TC使用DOM或Tag对象模型来定位页面元素,DOM方式是通过Document对象模型来组织页面对象的层次关系,而Tag方式是通过HTML的Tag标签来组织层次关系。


对象 进程 窗体 属性 应用程序 程序 应用 定位 运行 控件 方法 实例 脚本 测试 层次 不同 相同 名称 页面 操作系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网大会万兴科技 服务器设置在哪 清华大学软件开发专业 cfhd连接服务器错误 图书管理数据库的需求分析 网络安全方面的工具 宾馆没有制定网络安全制度行吗 传感器数据怎么存到数据库 文科生能学软件开发吗 常用的文件服务器 论分布式数据库设计与实现 服务器是不是网络特有设备 海航软件开发价格咨询 西安大学网络安全研讨 刺激战场在哪个服务器上线 360云端服务器连接 sql数据库查看cpu 广州荔支网络技术有限公司股票 车站售票软件开发 怎么看表单大师的数据库 网站软件开发安全措施 信息中心工作总结网络安全 黄浦区网络技术咨询服务报价表 国内数据库转换流量 传感器数据怎么存到数据库 手游用什么语言和软件开发 云电脑自己能不能开服务器 车站售票软件开发 星推客服务器出现故障是怎么回事 初中生网络安全教育讲座
0