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的对象识别体系。
领取专属 10元无门槛券
私享最新 技术干货