千家信息网

TestComplete识别对象原理

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,对测试对象的识别能力就成为一个GUI测试工具的最基本功能了。本文介绍TestComplete是如何识别进程、窗体和控件的。命名概念:为了在脚本中记录识别出来的测试对象,TC需要使用到这些对象的属性。每
千家信息网最后更新 2026年11月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安全错误 数据库的锁怎样保障安全 科技互联网政务服务 北京互联网科技公司 善班互联网科技有限公司 互联网科技logo设计 苏州大垚互联网科技 北京三清互联网科技 须眉科技是互联网公司吗 重庆威客帮互联网科技 贵州叶脉互联网科技有限公司所属行业 青岛科技大学互联网大赛研究生 宜昌元轩互联网科技有限公司 恒生互联网科技业指数调整周期 中天科技中国工业互联网 厦门江牛科技互联网 抖集互联网科技技术咨询 互联网科技手抄报图片 同城互联网络科技 北京军民互联网科技公司 恒生科技指数 中概互联网 恒生科技互联网指数十大成分股 云南咖啡 互联网科技开发公司 广州互联网科技公司 本届互联网博览会上的黑科技 翼展科技 首家互联网医院 特约风豹互联网科技为什么扣费 陕西云淼互联网科技公司 西安有哪些互联网高科技企业 中国新注册互联网科技 马化腾互联网科技教学
0