从理解QTP-ADD-INS开始
QTP ADD-ins即为QTP插件(通俗理解就是QTP识别不同空间对象类型的一套标准)
当我们在启动QTP时,QTP会首先弹出一个Add-Manager窗口,这个窗口主要提供给自动化测试人员选择相应的插件
插件类型:
Web
ActiveX
VB
.Net
WPF
......
如何选择插件:
首先确定被测对象类型,然后择相应插件
在必要时需要选择多个插件
择插件注意事项:
切记不要盲目跟进被测程序的开发语言来确定插件的选择
要严格遵守插件的定义,必须要根据被测控件对象的类型来进行择插件
QTP对象鉴别原理
作为一个自动化测试工程师来说,掌握测试对象的鉴别原理是非常重要的,因为几乎任何自动化测试工具在对象识别原理上几乎都是大同小异的,那么对于QTP这个工具来说,它的鉴别原理大致是这样:、
输入预期测试封装对象鉴别属性
获取实际运行封装对象鉴别属性
对比预期与实际是否一致
预期测试对象 = QTP对象库中的测试对象
实际测试对象 = QTP在运行时的被测对象
若是对比之后可唯一匹配,那么对象即识别成功;反之,则失败
QTP测试对象鉴别属性的选取
QTP识别对象是通过匹配测试对象的关键属性是否与真实对象的关键属性唯一匹配来进行的,这一点在QTP对象鉴别原理中已经讲的很清楚了,那么要匹配属性,肯定要一个依据才行,不可能自己拍脑袋说哪个属性就哪个属性
其实在QTP中只要是能够唯一识别的属性都可以作为鉴别属性,但是这不是一个通用的办法,在QTP这个工具本身对这一项做了一定的封装。对于不同类型的空间封装了一些常用的鉴别属性,这样做的好处就是不用每次都截取判断哪些才是唯一的鉴别属性
在Tools---》Object Identification中,首先确认需要查看的控件类型,这个其实就是取决于哪个插件,择好插件之后,在左边一栏及可看到对应的QTP封装对象,这是QTP自己封装的测试对象,随意选择一个封装对象,即可在右边看到相应的关键鉴别属性,这个其实就是描述对象的关键属性。一般情况下只要需要描述这些关键属性及可成功一个对象,这个在后面对象库操作和描述性编程中也会讲到
什么是QTP封装对象
所谓QTP封装对象就是QTP自身虚构出来的一种测试对象
这种对象是根据QTP的插件标准定制出的测试封装对象
它的作用主要是作为一种预期参考对象可与实际真实对象进行对比
主要体现:
QTP对象库
Object spy
object identification
什么是真实被测对象
所谓真实测试对象就是普通的真实对象,而非QTP封装对象
它是一种真实存在的对象
在识别测试对象过程中,QTP会把真实被测对象转化为QTP运行封装对象并把其作为一种实际结果对象。
在匹配对象时,QTP封装测试对象时作为一种预期虚拟对象,而真实被测对象时作为一种实际真实对象
这一点一定不要搞混淆了
它主要体现:程序界面上真实控件对象
QTP对象库
qtp对象库简称OR,也就是object Repository,其实就是存放QTP封装对象的地方,自从mercury引入关键字驱动测试之后,对象库就一直起着举足轻重的作用
qtp对象库的优势:
对象与脚本的完美分离,降低巨大的维护成本
更好的定位对象识别问题,提高对象识别排错的效率
可轻易的修改对象库中对象的描述属性,并能够更好的管理对象
在qtp中科直接通过Ctrl+r打开qtp对象库,并可在其中进行添加对象,删除对象,复制对象等操作
并且可实现某个对象的属性增删改操作。这一点功能是非常实用的,以后可结合spy和对象高亮进行快速排错
如何添加对象到对象库(OR)
在QTP中添加对象到对象库的方式一共有三种:
录制自动添加对象
手动添加测试封装对象到对象库
spy抓取直接提那家(QTP11新功能)
这里主要介绍手动添加测试对象方式:
当打开QTP之后,点击Ctrl+R之后,即可打开对象库
此时如果需要手工添加测试对象到对象库,只需点击界面上的“Add Objects”,鼠标变更为手型
点击任何你想要添加的测试对象即可直接添加到对象库中
注意!QTP本身无法添加隐藏对象
测试封装对象与运行封装对象
前面的文章中已经介绍了什么是封装对象
而qtp封装对象其实还分为两种类型:
测试封装对象(TO)
运行封装对象(RO)
测试封装对象简称TO,通俗的说就是对象库中的静态对象,对象属性为对象库中显示的属性值
运行封装对象简称RO,通俗的说就是spy中的动态对象,对象属性为spy中查询出来的实时属性值
说的再明白点:TO就是对象库中的封装对象,RO就是spy中查出来的封装对象
GETTOPROPERTY与SETTOPROPERTY
测试封装对象被称为TO,即为对象库中的测试对象,而在qtp中提供了两种运行时修改或者获取TO对象属性的方式:
GetTOProperty
SetTOProperty
GetTOProperty作用是运行时获取测试封装对象的属性值
<code class="VB">msgbox Browser("Browser").Page("Page"). _
W
WebEdit("WebEdit").GetTOProperty("name")</code>
分析:通过以上脚本可直接获取对象库中名为WebEdit文本框对象的name属性
SetTOProperty作用是运行时动态设置测试封装对象的属性值
<code class="VB">Browser("Browser").Page("Page"). _
W
WebEdit("WebEdit").SetTOProperty "name","helloworld"</code>
分析:通过以上脚本可以直接在运行时把WebEdit对象的name属性实时更改为helloworld
注意!此处的动态效果只在运行时生效,当测试运行完毕之后即会自动恢复初始状态,例如:修改测试对象的属性值时,只在运行时起效,当测试运行完毕,测试对象的属性值即会自动还原初始值
GETROPROPERTY与SETROPROPERTY
之前已经在iquicktest中简介过GetTOProperty与SetTOProperty的区别与用法
这两种方法主要是用于针对qtp测试封装对象中运行时的一些操作
那么在之前的内容中,我们已经介绍过了测试封装对象与运行封装对象,
既然qtp提供测试封装对象的函数,那就也不会遗漏运行封装对象的一些函数方法
GetROProperty
SetROProperty
GetROProperty:作用是获取运行封装对象的属性值,而非对象库中的属性值
<code class="VBScript">Msgbox Browser("Browser").Page("Page"). _
W
WebEdit("WebEdit").GetROProperty("name")</code>
SetROProperty:qtp并没有提供此函数,原因其实很简单,因为本身这些方法本来就是针对封装对象的,所谓封装对象其实是qtp虚拟出来的标准接口对象,因此不存在修改器运行封装这一说法。但是我们可修改控件的自身属性
<code class="VBScript">Browser("Browser").Page("Page"). _
W
WebEdit("WebEdit").Object.value = "test"</code>
SPY让对象无处藏身
Spy是一个自动化测试脚本编写过程探测运行封装对象的不可缺少工具。当你打开qtp后,可在工具栏中找到一个带着高帽子团的按钮即是Spy
当你打开它之后即会弹出spy窗口,此时在界面中可找到一个手势的按钮,在按下之后即可直接抓取对象,当你抓取完毕即可在spy窗口中看到两类属性和方法
运行封装属性
运行自身属性
在Spy窗口中有一个radio单选框,左边一个是运行自身属性,在qtp脚本编辑可以用object来进行访问,右边一个是运行封装属性,这边的属性其实就是GetROProperty获取的属性值