四、QTP界面对象识别原理

4.1 基本原理

QTP通过对象的预期属性-值,对应用程序的测试对象进行学习和识别。QTP中存在两种对象:测试对象和运行对象。利用强制属性(Mandatory Properties)将对象存储起来,即为测试对象(Test Object)。脚本运行时,会在父对象里面按照属性值对进行匹配,此时对象为运行对象(Runtime Object)。

如果强制属性不足以识别,还有辅助属性(Assistive Properties)。如果还是失败,就会根据配置启用Visual Relation Identifiers(利用相关对象识别对象)、SmartIdentification(增加自定义属性协助识别)、

Ordinal Identifier(按序号识别对象)。这个过程在下一篇进行介绍。

4.1 相关配置

上述学习对象和识别对象的原理,贯穿于QTP录制(描述性编程脚本编写)、回放(脚本运行)的整个过程,其中有很多配置都会影响识别的效果,本文介绍三个重要的配置。

1、对象库(Object Repository)

入口为:菜单->Resources->Object Repository。对象库存储了QTP在录制过程中学习到的对象,用户也可以根据需要进行添加。如下图所示,对于一个图书管理系统的登录按钮,QTP使用了两个属性描述:to_class和label,实际上是识别配置(Object Identification)中配置的强制属性。之后是VRI,就是再增加一种识别的方法,。下一篇文章详细介绍。之后是其他的细节,目前能查看的是Smart Identification是否使能。

2、识别配置(Object Identification)

入口为:菜单->Tools->Object Identification。识别配置是对QTP识别系统对象的详细配置。环境可以选择Web、Java、Windows等,根据是否安装了该环境的插件来定。下图以Java为例,对于每种控件都有强制属性(Mandatory Properties)和辅助属性(Assistive Properties)的配置,用户可以根据需要进行添加和删除。之后是是否使能智能识别(Smart Identification),使能后可以进行配置,配置的内容也是属性的选择,意思就是是否增加这些属性的匹配。最下面是配置使用序号识别时,序号用什么排列,选择项时index和location。

3、识别查看(Object Spy)。

入口为:菜单->Tools->Object Spy。Object Spy其实不是一个配置项,但非常值得介绍。笔者认为这是QTP最有用的功能,没有之一。Spy实际是一个调试工具,在对某对象进行脚本驱动前,用Spy分析一下,看看其各种属性和值,看看对象的层级关系。对于容易识别的对象,作用并不突出,对于不容易搞定的对象,缺它不可。所以是最有用的功能。该功能可以任意选择需要识别的对象并根据需要添加到对象库中。对象的体系结构(Object hierarchy)是该对象在GUI中的隶属关系。比如下图的“用户”JavaEdit,从一个叫做“图书管理系统”的JavaWindow,“糊”一层叫做“JRootPane”的JavaObject,一步一步到它的。形象的说明就是这个对象在界面上的“最根溯源”。实际上,也是开发在实现该GUI的代码体现。下面是属性和操作的查看,属性分Native和Identification。Identification是QTP用来识别的属性和部分值(有些有值但不显示,如index),也就是说QTP能够获取的属性,Native顾名思义就是原生态的,这些属性需要在脚本中用“.Object”之后才能访问,注意:不一定准确。由于部分控件可能被重写、或者QTP内部对象的原生态与实际系统不符,需要查API来确定(后面介绍)。操作也是类似的,分为Test Object和Native,区别于属性类似。

QTP在录制过程(描述性编程的脚本编写过程)中学习对象,回放(脚本运行)时识别对象。基本原理是很容易理解的,其中有很多灵活的配置都会影响学习和识别的效果。本篇介绍了基本的原理和重要的三个配置。之后会详细介绍QTP在识别一个对象时的“思考”过程,让我们能更好的理解QTP的对象识别体系。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180405G08CLN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

扫码关注腾讯云开发者

领取腾讯云代金券