第1章 简介 1
1.1 什么是自动化测试 2
1.2 自动化测试流程 2
1.3 什么是HPQuickTest Professional(QTP) 3
1.4 开始使用QTP 5
1.4.1 从HP网站下载 QTP 5
1.4.2 安装QTP 5
1.5 QTP许可证模式 9
第2章 QTP帮助文档的使用 13
2.1 目录标签(Contents Tab) 14
2.1.1 对象属性通过GetROProperty函数返回 14
2.1.2 测试对象提供的方法 15
2.2 索引标签(IndexTab) 15
2.3 搜索标签(Search Tab) 16
第3章 对象库 19
3.1 对象是如何被添加到对象库的 21
3.2 测试对象和运行时对象 22
3.2.1 TO属性 22
3.2.2 对象库模式 23
3.2.3 每个Action对应的公共对象库 24
3.3 对象探测器(Object Spy) 25
3.4 对象识别(Object Identification) 26
3.5 用户定义的对象 27
第4章 数据池 31
4.1 设计时和运行时数据表 33
4.2 何时使用全局数据表或者局部数据表 34
4.3 设置数据池的迭代(Setting data table iterations) 34
4.4 数据池对象模型(Data table object model) 36
4.5 数据池的格式(Data table formatting) 36
第5章 操作模块(Action) 41
5.1 输入和输出参数 42
5.2 操作模块的类型 45
5.2.1 Inserting Calls to Actions 45
5.2.2 Insert Call to New 45
5.2.3 Insert Call to Existing 46
5.2.4 Insert Call to Copy 47
第6章 QTP环境变量 50
6.1 环境变量的类型 51
6.2 Environment对象 52
第7章 保留对象 59
7.1 Crypt对象 60
7.2 OptionalStep对象 60
7.3 PathFinder对象 61
7.4 RandomNumber对象 61
7.5 Setting对象 62
7.6 WebUtil对象 63
7.7 SystemUtil对象 63
7.8 RegisterUserFunc对象 64
第8章 检查点 67
8.1 检查点的类型 68
8.2 QTP内嵌检查点的问题 69
8.3 检查点的替代方法 69
8.4 运行时更新检查点 70
第9章 库函数文件 73
9.1 关联一个全局库函数文件 74
9.2 运行时动态加载本地库函数文件 74
9.3 运行时动态加载全局库函数文件 75
9.4 解执行作用域 77
9.5 Option Explicit的适用性 78
9.6 全局作用域内执行本地作用域代码 78
第10章 描述性编程 81
10.1 对象识别 82
10.2 何时使用描述性编程 82
10.3 描述性编程语法 83
10.3.1 使用描述对象 83
10.3.2 Micclass标识符 84
10.4 使用描述字符串 85
10.5 列举ChildObjects 85
10.6 将基于对象库的脚本转换成基于描述性编程的脚本 86
10.7 使用VBScript描述性编程对象库 87
10.8 Index标识符问题 88
10.9 多浏览器应用 90
10.10 浏览器识别问题 91
10.10.1 使用OpenTitle识别浏览器 91
10.10.2 使用唯一的OpenURL属性识别浏览器 92
第11章 QTP的调试功能 94
11.1 打开调试配置项 95
11.2 断点的使用 95
11.3 Watch Tab页的使用 96
11.4 Variables Tab页的使用 97
11.5 Command Tab页的使用 97
第12章 场景恢复 100
12.1 什么时候场景恢复无法使用 101
12.2 各种场景恢复无法工作的情况 104
12.3 针对IE验证窗口的场景恢复处理 106
12.4 QTP各种默认场景恢复 107
12.5 Recovery对象 107
12.6 场景恢复函数调用 108
12.7 错误处理 110
第13章 正则表达式 113
13.1 正则表达式字符 114
13.2 何时在QTP中使用正则表达式 117
13.3 使用代码验证正则表达式 119
13.3.1 使用正则表达式选择WebList或WebRadioGroup的值 120
13.3.2 使用正则表达式提取信息 120
13.3.3 使用正则表达式替换数据 121
第14章 VBScript 124
14.1 字符串 125
14.2 转换函数 132
14.3 日期和时间函数 132
14.5 其他函数 135
14.5.1 TypeName 135
14.5.2 VarType 135
14.5.3 GetRef 136
14.5.4 CreateObject 136
14.5.5 GetObject 137
14.6 使用数组 141
14.6.1 定长数组 141
14.6.2 动态数组 142
14.6.3 执行语句 142
14.6.4 Eval函数 143
14.6.5 VBScript可选参数 143
第15章 同步点 149
15.1 同步点 150
15.2 检查对象的存在 151
15.3 事件(Events) 152
15.4 回放模式(Replay Option) 154
第16章 测试结果 156
16.1 在结果报告中过滤步骤 158
16.2 报告自定义测试步骤 158
16.3 在测试结果中插入文件 159
16.4 在测试结果中插入快照 160
16.5 转化XML结果为HTML格式 161
16.6 配置QTP生成HTML结果报告 162
16.7 QTP Reporter对象 162
16.8 在脚本最后访问测试结果 164
第17章 API应用 168
17.1 Extern对象 169
17.1.1 VB API定义语法 169
17.1.2 QTP API定义 169
17.2 QTP API的限制 174
17.2.1 使用VB6的API COM对象 174
17.3 通过Excel执行API 177
17.4 动态生成Excel宏 178
17.5 使用模式对话框 181
第18章 QTP自动化对象模型 187
18.1 QTP自动化对象模型(AOM) 188
18.2 传递参数给测试用例 188
18.2.1 使用测试参数 189
18.2.2 传递测试参数 189
第19章 HTML DOM 192
19.1 何时应该使用HTML DOM 193
19.2 何时不宜使用HTML DOM 193
19.3 HTML DOM对象集 194
19.3.1 HTML节点 194
19.3.2 Document对象 194
19.3.3 HTML元素对象 195
19.3.4 HTML元素集 195
19.3.5 使用DOM获取Web页面的元素 196
19.4 其他HTML元素 196
19.5 转化DOM对象为QTP测试封装对象 199
19.6 使用样式表单验证外观 199
19.7 通过文本选择单选框 201
第20章 WebTables应用 207
20.1 WebTables 208
20.2 访问WebTable 209
20.2.1 使用index 209
20.2.2 使用Name或HTML ID 209
20.2.3 使用innerText/outerText 209
20.2.4 使用对象库 212
20.2.5 使用Table中的对象 214
20.2.6 获取Table中对象的位置 215
20.3 点击Webtable内部 216
20.4 Table的异步加载 218
20.5 导出WebTable数据到DataTable 218
20.6 WebTable功能扩展 219
20.6.1 通过dom元素中获取Table 219
20.6.2 搜索查找Table中的单元格 220
第21章 XML应用 224
21.1 QTP XML对象 225
21.2 读取和修改XML 226
21.3 处理应用程序的多个环境变量文件 229
21.4 输出XML到数据表 230
21.5 比较XML 231
第22章 数据库应用 235
22.1 连接一个数据库 236
22.2 构建连接字符串 236
22.2.1 连接向导 236
22.2.2 检查连接对象或者结果集对象的状态 239
22.3 将查询结果导出DataTable 240
22.4 执行数据库存储过程 241
第23章 Microsoft Excel应用 244
23.1 Excel自动化对象模型 245
23.2 将VBA转换为VBScript 249
第24章 Outlook应用 259
24.1 Outlook对象模型 260
24.1.1 连接Outlook应用程序 260
24.1.2 登录到名称空间(Namespace) 261
24.1.3 遍历顶级文件夹 261
24.1.4 用户交互式的获取文件夹 262
24.1.5 获取默认文件夹 263
24.2 读取邮件消息 264
24.2.1 访问电子邮件的消息属性 265
24.2.2 下载附件 265
24.3 发送电子邮件消息 266
24.4 Outlook安全对话框 266
24.5 从电子邮件消息中获得地址 269
24.6 点击在电子邮件消息中的链接 270
24.7 使用电子邮件触发QTP 271
第25章 Microsoft Word应用 274
Word自动化对象模型 275
第26章 Microsoft IE应用 282
26.1 打开Internet Explorer(IE) 283
26.2 IE COM方法和属性 283
26.3 页面同步 285
26.4 枚举所有IE窗口 285
26.5 查找IE窗口 286
26.6 打开新浏览器 287
26.7 获取Web页面DOM 288
26.8 访问网页脚本变量 289
26.9 使用IE获取用户输入 290
26.10 IE弹出对话框 291
26.10.1 禁止IE对话框 292
26.10.2 通过注册表改变IE设置 292
26.10.3 弹出窗口拦截器 293
26.10.4 禁止脚本出错对话框 293
26.10.5 安全警告—重定向弹出框 294
26.10.6 证书安全警告 294
26.10.7 安全连接警告 295
26.10.8 安全提示—安全和非安全项 295
26.10.9 活动内容/Java Script显示 296
26.10.10 文件下载信息条 297
26.11 使用代码处理弹出对话框 298
26.12 文件下载——安全警告弹出框 299
26.13 检查网页中的失效图片 301
26.14 把Browser对象当作Window对象使用 302
26.15 定制Browser应用程序 304
第27章 HP Quality Center应用 306
27.1 Quality Center 307
27.2 用QTP连接QC 307
27.3 QC路径 308
27.4 QC中的相对路径 309
27.5 QCUtil对象 310
27.6 QC开放式测试体系(OTA) 311
27.7 TDConnection对象 312
27.7.1 Command and Recordset对象 313
27.7.2 AttachmentFactory Collection 314
27.7.3 从QC下载文件的简便方法 316
27.7.4 上传附件到QC 317
27.8 获取当前测试的位置 318
27.9 列举TestLab文件夹中所有的测试 318
27.10 列举Test Lab标签页中所有的测试 319
27.11 获取当前测试集的位置 321
第28章 QTP高级应用 323
28.1 不同机器的测试脚本同步执行 324
28.2 遍历所有Settings变量 325
28.3 利用脚本停止脚本并重新运行脚本 330
28.4 运行时添加场景恢复 331
28.5 在脚本执行完毕时执行代码 331
28.6 使对象在网页中可见 334
28.7 高级文本检查点 334
28.8 利用Class类扩展测试对象 339
28.9 Jscript在QTP中的应用 341
28.9.1 传递可变数量参数给函数 342
28.9.2 域的差异 343
28.9.3 使用Try…Carch错误捕获 343
28.9.4 Jscript数组应用 344
28.9.5 JS类的应用 345
28.10 对象类映射 346
第29章 QTP11 349
29.1 IDE增强 350
29.1.1 注释 350
29.1.2 增强的智能提示功能 350
29.1.3 Run to Step,Debug from Step和Run from Step 350
29.1.4 启用/禁用断点 351
29.1.5 重命名检查点 351
29.1.6 自定义函数生成器 351
29.1.7 函数库功能的增强 352
29.2 Web拖曳(Drag)和下拉(Drop)方法的支持 353
29.3 鼠标中间键与右键的点击方法 353
29.4 对象属性支持Firefox浏览器 353
29.5 使用XPATH或者CSS识别Web对象 354
29.6 正则表达式计算器 355
29.7 在网页中执行JavaScript 355
29.8 菜单更新 356
29.9 新的配置选项 357
29.9.1 忽略浏览器 357
29.9.2 捕捉视频到报告中 358
29.10 新增和增强保留对象(Utility Objects) 358
29.10.1 QCUtil 358
29.10.2 SystemUtil 359
29.11 输出Log功能 359
29.11.1 隐藏Log输出窗口 360
29.11.2 显示Log输出窗口 361
29.11.3 清除Log输出窗口 361
29.11.4 利用脚本获取Log并输出窗口的文本 362
29.12 在运行时载入并运行操作模块(Action) 362
29.13 Repository保留对象 363
29.14 本地系统监测 363
29.15 报告增强 364
29.15.1 报告图片 364
29.15.2 支持在结果报告中记录信息 365
29.16 计时器(MercuryTimer) 366
29.17 对象库集合(RepositoriesCollection) 367
29.18 DotNetFactory 368
29.19 获取对象库中测试对象的对象名称 368
29.20 对象库的增强功能 369
29.20.1 本地对象库(Local Object Repository,LOR) 369
29.20.2 共享对象库(SOR) 371
29.20.3 关联共享对象库(SOR)到测试脚本 372
29.21 增加对象到共享对象库(SOR) 373
29.21.1 利用增加对象按钮来增加对象到SOR 373
29.2 1.2 手动定义对象 373
29.21.3 通过对象识别器(Spy)添加对象 374
29.21.4 导航与学习(Navigate and Learn) 376
29.21.5 对象库其他相关的功能 377
29.21.6 定位对象库中的对象 378
29.21.7 从被测应用程序中更新对象 378
29.21.8 本地对象库和共享对象库的优先级 379
29.21.9 对象库参数(Object Repository Parameters,ORP ) 380
29.21.10 对象库的导入与导出 383
29.21.11 更新本地对象库 383
29.21.12 解决对象合并过程中的冲突 385
29.21.13 对象库合并工具 387
29.21.14 对象库对比工具 387
29.21.15 本地对象库VS共享对象库 389
29.22 对象探测器(Object Spy) 389
第30章 .NET类的应用 391
30.1 使用DotNetFactory对象 392
30.2 传递参数到类构造函数 392
30.3 传递参数到.NET对象 392
30.4 传递枚举类型(Enums) 393
30.5 使用.NET数组 394
30.6 播放Wav文件 395
30.7 使用剪贴板 396
30.8 获取计算机信息 396
30.9 访问注册表 396
30.10 Ping IP地址 397
30.11 检测键盘控制键状态 397
30.12 .NET数组再探 398
30.13 使用.NET栈 398
30.14 使用.NET队列 399
30.15 使用.NET日期和时间格式化 399
30.16 使用.NET发送Email 400
30.16.1 将图片转换为其他文件格式 401
30.16.2 使用.NET窗体获取用户输入 403
第31章 框架设计 410
31.1 设计规范 411
31.2 QTP示例 414
31.2.1 复用性 414
31.2.2 不同版本应用的支持 415
31.2.3 从外部可配 415
31.2.4 日志 416
31.2.5 自动配置 416
第32章 实用工具 419
32.1 QTP Script Editor(QTP脚本编辑器) 420
32.2 VBSEdit 420
32.3 Notepad++ 421
32.4 QTP Uninstaller V3 422
32.5 ScreenCapture API 423
32.6 KnowledgeInbox IE Session Cookies Helper 423
32.7 VB-QTP API脚本转换器 423
32.8 IE WebDeveloper 424
32.9 Test Design Studio(TDS) 425
32.10 RAD正则表达设计工具 427
附录A 429