QTP 保留对象
1. 常用保留对象(Utility Objects)
保留对象:所谓QTP保留对象就是QTP本身预留的一些可用对象。
通俗些讲就是,当打开QTP时它就已经把这些对象给实例化了,直到关闭QTP后,这些保留对象的实例才会终止。这些保留对象都是QTP事先封装好的常用操作对象,无需像开源软件那样都需要自己来搭建这些对象和类库,一切都是现成的!在保留对象中有些是可见的,有些是隐藏的(需要人工开启),具体如何查看隐藏保留对象会在下一个小节中详细进行讲解。
那么保留对象具体在QTP中如何呈现呢?当打开QTP后,按F7键,弹出了步骤生成器窗口,如下图所示

每个保留对象都是一个COM组件,都可自行创建,其中很多的保留对象在做实例项目测试的时候都是非常实用的,接下来就为大家介绍几个常用的保留对象。
1)Crypt:加密模块保留对象
实现如下所示:
|
PwStr = Crypt.Encrypt("mercury") Dialog("Login").WinEdit("Agent Name:").Set "mercury" Dialog("Login").WinEdit("Password:").SetSecure PwStr Dialog("Login").WinButton("OK").Click |
分析:
利用Crypt保留对象可以把字符串自动转化为加密形式的字样,并且每次动态生成的加密密码都是不一样的,其实,此功能就是Password Encoder
2)Desktop:桌面保留对象
实现如下所示:
|
Desktop.CaptureBitmap "D:\1.bmp" |
分析:
通常此对象用于出错时的截图,使用此对象来截图非常方便,只需给定生成截图的路径即可,这个在前面的章节也用过。
3)MercuryTimes:计时保留对象
实现如下所示:
|
‘计时开始 MercuryTimers("LoginPage_MainPage").Start '****************************************** ' LOGIN MAINPAGE Wait 2 '****************************************** ‘计时结束 MercuryTimers("LoginPage_MainPage").Stop ‘获取总共耗时时间 Print MercuryTimers("LoginPage_MainPage").ElapsedTime |
分析:
MercuryTimes保留对象是一个非常实用的对象,它对于测试应用程序的性能是非常有帮助的,此对象也是在QTP 9.2版本才开始加入的。
4)PathFinder:路径保留对象
实现如下所示:
|
Msgbox PathFinder.Locate("Default.xls") |
分析:
PathFinder在QTP中的可见方法只有Locate,其参数为文件名称,其作用主要是获取到参数中的文件的完整绝对路径。
5)RandomNumber:随机数保留对象
实现如下所示:
|
Print RandomNumber.Value (0, 100) |
分析:
执行以上脚本会得到一个0~100的随机数。注意,此处包含0和100。由于此处Value是默认属性,因此可以省略。
2. 隐藏保留对象
上一小节已经介绍了一些常用的保留对象,但其实保留对象远远不止这些,QTP本身在步骤生成器中还隐藏了一些保留对象,如RegisterUserFunc、WebUtil、UnRegisterUserFunc等,这些保留对象都是QTP的隐藏模式保留对象。你会发现步骤生成器中根本找不到这些保留对象,但是这些对象确实是真实存在的,比如:
● WebUtil:此对象在QTP的帮助文档里以及对象浏览器里都是找不到的,可以说是QTP的一个隐藏对象。
我们只需要在专家视图中输入WebUtil再加一个“点”,就会展开许多的方法。
其实隐藏保留对象都可在注册表中查看:
运行“regedit”进入注册表,依次单击HKEY_CURRENT_USER→Software→Mercury Interacitve→QuickTest Professional→MicTest→ReservedObjects下的所有项如下图所示:

可以看到QTP中所有存在的保留对象,不管隐藏的还是非隐藏的保留对象都可以直接找到。其中每一项代表着一个保留对象,在此目录中的每一项下的KEY包含ProgID。ProgID代表着保留对象创建的COM字符串,例如:
|
Set oRegisterFunc = CreateObject(“Mercury.RegisterUserFunc”) |
这些保留对象基本上都可以通过以上的方式来创建,不过有些只能在QTP中进行创建。
注意:当在QTP中创建这些对象时,也就意味着自行创建了一个保留对象的实例,而此实例与原来QTP默认实例化的保留对象是没有任何关系的。
3. 自定义保留对象
我们可以将所有使用的方法封装成DLL文件,然后通过COM机制注册到系统中,注册自定义保留对象机制来完成对象的定义。
Step 1.在VB环境下新建一个DLL文件
1)打开VB6.0环境,选择ActiveX DLL, 简单设计一个函数和一个过程,代码如下:
Public Function CompareValue(Para1, Para2)
If Para1 = Para2 Then
MsgBox "输入的两个参数相等", vbInformation + vbOKOnly, "提示"
Else
MsgBox "输入的两个参数不相等", vbInformation + vbOKOnly, "提示"
End If
End Function
2) 设置工程属性
类名,设置为:ClassName,注册自定义保留对象用到。
工程名,设置为:PrjName,注册自定义保留对象用到。
3) 生成文件:PrjName.dll
点击文件——>生成 PrjName.dll
Step 2. 注册DLL文件为标准的COM组件
如果文件放到F盘下,那运行:regsvr32 f:\PrjName.dll就可以完成注册,撤销注册运行:regsvr32 /u f:\PrjName.dll。注册完成后,注册表HKEY_CLASSES_ROOT中查询PrjName.ClassName
Step 3. 注册自定义QTP保留对象
打开注册表,定位注册项:HKEY_CURRENT_USER→Software→Mercury Interacitve→QuickTest
Professional→MicTest→ReservedObjects
添加一个名为“MyObject”的注册项;
添加两个“REG_SZ”类型的注册项,分别为:
ProgID:准备创建的COM 对象的ID,在这里就是Dictionary 对象所对应的COM 对 象名 “PrjName.ClassName”。这个就是前面提到的VB中的工程名、类名。 UIName:QTP指向保留对象的名
字,在这里输入“MyObject”
添加一个类型为“REG_DWORD”的注册项;
VisibleMode:设置DWORD 值为2,用于控制自动完成(auto-complete)和代码智能感知(intelligence)。
也可以按下通过运行下面的reg文件的方式来注册:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Mercury Interactive\QuickTest Professional\MicTest\ReservedObjects\REG_SZ]
"ProgID"="PrjName.ClassName"
"UIName"="MyObject"
"VisibleMode"=dword:00000002
Step4. 使用自定义QTP保留对象
做完以上设置后,重新启动QTP, 在Insert菜单中选择Step Generator,然后选择Utility Objects,你可以在Object中看到我们定义的保留对象.
QTP 保留对象的更多相关文章
- QTP 中对象操作
1.创建对象(将浏览器设置为一个对象) set oIE=createobject("internetexplorer.application") 2.将浏览器设置为可见的 oIE. ...
- QTP 学习 - 对象库
QTP的关键字视图和专家视图 1.Keyword view(关键字视图) 在录制脚本的过程中,用户执行的每一个步骤,在关键字视图中记录为一行. 关键字视图直观有效,用户可以很清楚的看到被录制对象的录制 ...
- QTP使用dictionary 对象
1. 创建即使用Dictionary对象 ' 创建Dictionary对象Set Dic = CreateObject("Scripting.Dictionary")' 添加Dic ...
- 整理QTP知识之1
以下说明由网络其他文章整合而成. 一.关于QTP的说明 QTP是目前市场上占有率最高的一款自动化测试工具,也是每一位测试工作者最想掌握的工具之一,也是目前流行的基于GUI的功能自动化测试工具之一. Q ...
- Scala 编程---类和对象
类是对象的蓝图.一旦你定义了类,你就可以用关键字new从类的蓝图里创建对象.比方说,如果给出了类的定义: class ChecksumAccumulator { // class definition ...
- QTP和WinRunner区别
QTP,全称为Quick Test Professional,它与WinRunner同为MI公司开发的功能强大的功能测试工具.从时间上来看,WinRunner在1995年便已经推出,远早于QTP,而Q ...
- Scala 编程(二)类和对象
类,字段和方法 类是对象的蓝图.一旦定义了类,就可以用关键字new从类的蓝图里创建对象,类的定义: class ChecksumAccumulator { // class definition go ...
- QTP特点有哪些?
QTP特点有哪些? 浏览:77 | 更新:2013-06-19 12:35 QTP是一个侧重于功能的回归自动化测试工具:提供了很多插件,如:.NET的,Java的,SAP的,Terminal Emul ...
- JavaScript对象的深浅复制
前言 从层次上来看,对象的复制可以简单地分为浅复制和深复制,顾名思义,浅复制是指只复制一层对象的属性,不会复制对象中的对象的属性,对象的深复制会复制对象中层层嵌套的对象的属性. 在复制对象时,除了要复 ...
随机推荐
- Codeforces 1080C 题解(思维+二维前缀和)
题面 传送门 题目大意: 有一个黑白的棋盘,现在将棋盘上的一个子矩形全部染成黑色,另一个子矩形全部染成白色 求染完色后黑,白格子的总数 分析 我们可以发现,对于一个(1,1)到(x,y)的矩形,若xy ...
- thinkphp开发微信小程序后台流程
thinkphp开发微信小程序后台流程,简单分享一下微信开发流程 1,注册微信小程序账号 2,注册好后,登陆微信小程序,下载微信小程序开发工具 3,用thinkphp开发企业后台,前台数据用json返 ...
- BZOJ 5450 轰炸 (强连通缩点+DAG最长路)
<题目链接> 题目大意: 有n座城市,城市之间建立了m条有向的地下通道.你需要发起若干轮轰炸,每轮可以轰炸任意多个城市.但每次轰炸的城市中,不能存在两个不同的城市i,j满足可以通过地道从城 ...
- P2469 [SDOI2010]星际竞速(费用流)
P2469 [SDOI2010]星际竞速 最小路径覆盖问题 每个星球必须恰好去一次,而每次高速航行都是从一个星球到另一个星球. 那么高速航行的起点可以保证被去过 高速航行和空间跳跃可以是互相独立的 将 ...
- sql插入语句笔记
使用INSERT插入数据行 [一次插入一行数据] 全写: INSERT INTO renshi (name, sex, age ,tel) VALUES ('胡大姐','女','35','13 ...
- 修改DbVisualizer的默认快捷键 .
修改SQL提示的步骤如下:1, 编辑dbvis.jar包下的dbvis-actions.xml文件(解压或直接修改)2, 找到以下的代码<actionidref="show-auto- ...
- ORACLE数据字典DBA视图
select * from DBA_ALL_TABLES --显示数据库中所有表的描述 select * from DBA_CATALOG --列出所有数据库标,视图,同义词和序列 ...
- MyEclipse创建maven项目时报: org.apache.maven.archiver.MavenArchiver.getManifest 错误
创建项目报错,如图: 原因就是maven的配置文件不是最新的,MyEclipse2014解决方法: 1.help ->Install New sitie... 2.点击add 3.填写name和 ...
- 二、小程序内嵌Html基础格式说明
1.index.js文件更改 var WxParse = require('../../wxParse/wxParse.js'); Page({ data: { }, onLoad: function ...
- 脚本_检测 MySQL 数据库连接数量
#!bin/bash#功能:检测 MySQL数据库连接数量,以满足对 MySQL 数据库的监控需求,查看 MySQL 连接是否正常.#作者:liusingbon#本脚本每 2 秒检测一次 MySQL ...