QTP自传之对象
对象在手,测试我有
大家别误会,这里说的对象可不是值指男女朋友,而是对被测控件的识别。经过昨天的录制,大家一定很奇怪为什么我可以做到精确的回放操作,这都要归功于对象,下面就隆重的介绍我在对象识别方面的强大功能。
初识对象库
打开上次录制的脚本record,点击【Resources】->【Object Repository】或按快捷键CTRL+R,打开对象库,如下图。

简单介绍下各个按钮的作用。
Test Objects:测试中用到的对象都在这里。
Checkpoint and Output Object:检查点和输出对象,平时项目中基本上用不到。
1:添加对象,手动添加需要的测试对象到对象库,如何添加后面会详细说明。
2:更新对象,由于版本的更迭导致对象变更时使用,具体步骤和添加对象相同,需要注意的是所更新的对象必须是相同类型的,不能把WebEdit更新曾Link类型。
3:定义新对象,使用频率不高,一般都直接添加对象。
4:对象高亮,使对象库中的对象在网页或程序上闪烁,可以达到定位的效果,检查对象添加的是否正确。
5:定位对象,检查被测程序上的对象是否已在对象库中。
6:对象侦探,无需添加对象到对象库就可以查看对象的属性,实际工作中用的最多的功能。
7:关联对象库,加载封装好的对象库,使用较多。
Object Properties:显示和编辑对象的具体属性。
添加对象
对象库是我最重要的功能,没有对象库就没有我现在的地位,而添加对象又是对象库中最重要的功能呢。为了看到手动添加的效果,我们先删除现有对象库的对象,右键点击对象删除之。
点击添加对象图标(图中1的位置),会出现一个白色小手,将白色小手移动到需要添加的对象上,这里先添加用户名输入框,单击后如下图。

单击后会出现一个对话框,同时显示要添加对象的父级对象,需注意,添加子对象时父级对象会自动添加至对象库。也就是说,如果我们选择WebEdit那么Page和Broswer也会一起添加至对象库;如果选择Page那么Broswer会被添加至对象库而WebEdit不会被添加,可以理解为向上兼容。好了,我们选择WebEdit进行添加,如下图。

按相同步骤添加邮箱、密码和登录按钮,因为他们都在同一页面上,会被直接添加在父对象Page下。

这时大家应该会发现,添加对象时我会自动为他们命名,当然名字也不是随便取的。以mail为例,注意看Object Properties部分,下面详细部分Description properties:type=text、name=mail、html tag=INPUT,看到这里有没有联想什么?还记得我们自己写的网页代码么?
<input type="text" name="mail" class="user_input">
一目了然,这里的属性其实就是HTML标签的属性。如果觉得自动生成的名字看着不舒服,直接修改Object Properties中Name值就可以。将mail改为邮箱,password改为密码,username改为用户名,修改后可以看到脚本代码也自动更新了。

我之所以能够识别各种各样的对象,是因为已经有了这些对象的身份证明,他就是Object Identification。
点击【Tools】->【Object Identification】,列出了可以识别的所有web对象,可以在注册表HKEY_CURRENT_USER\Software\Mercury Interactive\QuickTest Professional\MicTest\Test Objects 查看,注册表里没有的Object Identification也不会有。Object Identification的配置一般不需要更改,了解即可。

对象侦探
自动化对象控件纷繁杂乱,工作中经常需要了解对象的内部属性,直接看源码费时费力,考虑到这点,我特地提供了对象侦探服务,可以方便的查看对象的属性。可以通过三种方式打开:
1.点击【Tools】->【Object Spy】
2.直接点击Spy图标

3.在对象库中点击Spy图标 (第一幅图片6位置)
具体如图所示

好了,拿用户名输入框练练手,Properties显示了相关的属性。

Operations是该对象可以使用的方法,在以后的对象库编程中会用到。

捕获对象时,若需要鼠标或键盘进行操作,按下CTRL+ALT可以进行输入,然后再按CTRL就可以捕获了。
关联对象库
顾名思义,可以将对象库封装为外部文件,成为公共对象库,供不同脚本使用。实现步骤:
1.导出现有对象库。CTRL+R打开对象库,点击【File】->【Export Local Objects】,选择保存文件夹。

2.为了突出效果,先删除现有对象库中的对象,然后点击Object Spy右边的图标。

3.点击【+】选择要关联的对象文件,将Action1移入Associated Actions,点击【OK】。

4.对象已被添加至Test Objects且是灰色不可编辑,若想编辑可以右键点击对象选择Copy To Local。

听说十遍,不如操作一遍,web对象五花八门,行踪飘忽,只有通过大量的实际操作才能逐渐摸透其中的原理。
下一次,将为大家介绍web相关的常用的对象,现在,洗洗睡了。
QTP自传之对象的更多相关文章
- QTP自传之对象库编程
对象库编程是我们平时工作中使用最多的编程方式,在自动化脚本开发中起到举足轻重的作用,与描述性性编程相比,更直接和易于维护,今天就和大家简单的聊聊如何进行对象库编程. 既然是对象库编程,肯定要对已存在于 ...
- QTP使用dictionary 对象
1. 创建即使用Dictionary对象 ' 创建Dictionary对象Set Dic = CreateObject("Scripting.Dictionary")' 添加Dic ...
- QTP自传之web常用对象
随着科技的进步,“下载-安装-运行”这经典的三步曲已离我们远去.web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要.今天,介绍一下我对web对象的识别,为以后的 ...
- 使用QTP测试Web对象
加载Web插件先启动QTP,再启动浏览器,否则Web元素识别不了最新版本QTP11支持的浏览器:IE:6.7.8Firefox:3.0.x.3.5.QTP支持直接访问DOM(Document Obje ...
- QTP自传之初识
我叫QTP,全名是HP Quicktest Professional,大家都叫我小Q. 小Q生于1998年,那是一个春天(哈哈咱也是跨世纪的人才).家里人丁兴旺,兄弟众多,L(Loadrunner), ...
- QTP自传之录制
录制,是一件吃力不讨好的活.很多人以为录制就是我的主要甚至全部的功能,这是大错特错的.不过,录制功能却是不熟悉我的人了解我的有效途径,是大家学习的有力武器.今天就先从录制功能说起吧. 说到录制,就不得 ...
- [转载]使用QTP测试Windows对象
Desktop对象的使用: 通过Desktop对象,可以访问Windows的桌面顶层对象.Desktop对象包括CaptureBitmap.ChildObjects.RunAnalog方法. (1) ...
- QTP设置共享对象库
第一步:把需要加到共享对象库中的各个用例脚本的对象库,分别导出成.tsr文件. 操作方法:先用QTP打开已经录制完毕的脚本后,选择Resources-->Object Repository.然后 ...
- QTP VBScript RegExp对象的运用
下面来讲讲RegExp对象: Vbs提供了针对正则表达式的一个非常实用的类,就是RegExp Global属性:代表全局匹配 IgnoreCase属性:大小写忽略 Pattern属性:正则表达式 Ex ...
随机推荐
- php生成不重复随机字符串
使用时间戳作为原始字符串,再随机生成五个字符随机插入任意位置,生成新的字符串,保证不重复 function rand($len) { $chars='ABCDEFGHIJKLMNOPQRSTUVWXY ...
- 解决vim不能使用方向键和退格键问题
1.使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多字母,或者退格键却变成方向键的功能 只要重装一下vi的依赖包即可完美解决vi编辑器方向键变字母的问题.rpm -e vim-enhance ...
- 解决每次升级Xcode后三方插件失效问题
其实就是插件里面的UIID没有加新XcodedeUIID 拿常用的Alactraz来说 在Terminal中 un these 2 lines in terminal:1:find ~/Library ...
- Java----多线程知识点归纳(概念)
一.线程与进程的区别: 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. ?线程本身的数据通常只有寄存器数据,以及一个 程序执行时使用的堆栈,所以线程 ...
- Codeforces Round #286 (Div. 1) 解题报告
A.Mr. Kitayuta, the Treasure Hunter 很显然的一个DP,30000的数据导致使用map+set会超时.题解给了一个非常实用的做法,由于每个点有不超过250种状态,并且 ...
- Extjs4 关于Store的一些操作(转)
1.关于加载和回调的问题 ExtJs的Store在加载时候一般是延迟加载的,这时候Grid就会先出现一片空白,等加载完成后才出现数据:因此,我们需要给它添加一个提示信息! 但是Store却没有wait ...
- Linux常用命令大全(2)
系统信息arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / ...
- PHP第一课笔记
打算以后学习PHP,花3个月时间学会它,自己为自己加油.每天坚持学习,第一天感觉良好,没开始写,所以不敢觉难,在难也学,加油,me!! PHP笔记记录(2014.7.27) ★web开发的介绍 1.动 ...
- web一点小结
1, AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX ...
- delphi定义自己的消息
定义一个消息需要两个步骤: 1.声明一个消息标识符 2.声明一个消息记录类型 一个消息标识符是一个整数大小的常数.Windows自用低于1024的消息,所以当你声明你自己的消息,你应该开始高于这一数字 ...