第一篇 基础篇 1
第1章 Selenium简介 1
1.1 Selenium的前世今生 1
1.2 Selenium工具套件介绍 2
1.3 Selenium支持的浏览器和平台 2
1.3.1 Selenium IDE、Selenium 1和Selenium RC支持的浏览器和平台 2
1.3.2 Selenium 2(WebDriver)支持的浏览器 3
1.4 Selenium RC和WebDriver的实现原理 4
1.4.1 Selenium RC的实现原理 4
1.4.2 WebDriver的实现原理 6
1.4.3 Selenium 1.0和WebDriver的特点 6
1.5 Selenium 3的新特性 7
第2章 自动化测试那点事儿 8
2.1 自动化测试目标 8
2.2 管理层的支持 11
2.3 投入产出比 11
2.4 敏捷开发中的自动化测试应用 12
2.5 自动化测试人员分工 14
2.6 自动化测试工具的选择和推广使用 14
2.6.1 自动化测试工具的选择 14
2.6.2 Selenium WebDriver和QTP工具的特点比较 14
2.7 在项目中实施自动化的最佳实践 15
2.8 学习Selenium工具的能力要求 17
第3章 自动化测试辅助工具 18
3.1 安装Firefox浏览器 18
3.2 安装Firebug插件 18
3.3 Firebug插件的使用 20
3.3.1 启动Firebug插件 20
3.3.2 Firebug插件的常用功能 20
3.4 安装FirePath插件 22
3.5 FirePath插件的使用 24
3.5.1 FirePath插件中使用XPath定位方式 24
3.5.2 FirePath插件中使用CSS定位方式 26
3.6 IE浏览器自带的辅助开发工具 28
第4章 Selenium IDE 30
4.1 Selenium IDE的定义 30
4.2 安装Selenium IDE 30
4.2.1 从Selenium官网安装 30
4.2.2 使用离线XPI安装文件安装 32
4.3 Selenium IDE插件界面和功能介绍 33
4.3.1 主界面 33
4.3.2 常用工具栏 34
4.3.3 脚本编辑区域 34
4.4 常用菜单项 34
4.4.1 “文件”菜单 34
4.4.2 “编辑”菜单 35
4.4.3 Actions菜单 35
4.4.4 Option菜单 36
4.5 录制和回放脚本实例 38
4.6 Selenium IDE脚本介绍——Selenese 39
4.7 Selenium IDE的基本命令使用实例 40
4.7.1 waitForText、verifyText和assertText命令 40
4.7.2 storeTitle命令和echo命令 44
4.7.3 openWindow命令和selectWindow命令 44
4.8 从Selenium IDE导出脚本 45
4.8.1 导出脚本文件 45
4.8.2 将Selenium IDE插件中的某行命令导出为Python脚本 48
第5章 搭建Python环境和PyCharm集成开发环境 49
5.1 安装Python并配置Python环境 49
5.1.1 下载并安装Python解释器 49
5.1.2 配置Python环境 50
5.1.3 安装pip 52
5.2 安装Python集成开发环境PyCharm 53
5.3 新建一个Python工程 55
第6章 Selenium3(WebDriver)的安装 58
6.1 在Python中安装WebDriver 58
6.2 第一个WebDriver脚本 59
6.3 各浏览器驱动的使用方法 62
第7章 单元测试框架的使用介绍 63
7.1 单元测试的定义 63
7.2 unittest单元测试框架 63
7.2.1 unittest的定义 63
7.2.2 unittest框架的4个重要概念 63
7.2.3 单元测试加载方法 64
7.2.4 测试用例 64
7.2.5 测试集合 69
7.2.6 按照特定顺序执行测试用例 71
7.2.7 忽略某个测试方法 74
7.2.8 命令行模式执行测试用例 75
7.2.9 批量执行测试模块 77
7.2.10 常用的断言方法 80
7.2.11 使用HTML TestRunner生成HTML测试报告 85
7.3 在unittest中运行第一个WebDriver测试用例 87
第8章 页面元素定位方法 89
8.1 定位页面元素方法汇总 89
8.2 使用ID定位 90
8.3 使用name定位 91
8.4 使用链接的全部文字定位 92
8.5 使用部分链接文字定位 92
8.6 使用HTML标签名定位 93
8.7 使用Class名称定位 94
8.8 使用XPath定位 94
8.8.1 XPath的定义 94
8.8.2 XPath节点 95
8.8.3 XPath定位语法 96
8.8.4 XPath运算符 101
8.9 CSS定位 103
8.9.1 CSS的概念 103
8.9.2 CSS定位语法 103
8.9.3 XPath定位与CSS定位的比较 109
8.10 表格的定位 110
8.10.1 遍历表格所有的单元格 110
8.10.2 定位表格中的某个元素 112
8.10.3 定位表格中的子元素 112
第二篇 实战应用篇 115
第9章 WebDriver的多浏览器测试 115
9.1 使用IE浏览器进行测试 115
9.2 使用Firefox浏览器进行测试 116
9.3 使用Chrome浏览器进行测试 117
第10章 WebDriver API详解 119
10.1 访问某个网址 119
10.2 网页的前进和后退 120
10.3 刷新当前网页 120
10.4 浏览器窗口最大化 120
10.5 获取并设置当前窗口的位置 121
10.6 获取并设置当前窗口的大小 121
10.7 获取页面的Title属性值 122
10.8 获取页面HTML源代码 122
10.9 获取当前页面的URL地址 123
10.10 获取与切换浏览器窗口句柄 123
10.11 获取页面元素的基本信息 124
10.12 获取页面元素的文本内容 125
10.13 判断页面元素是否可见 125
10.14 判断页面元素是否可操作 127
10.15 获取页面元素的属性 128
10.16 获取页面元素的CSS属性值 128
10.17 清空输入框中的内容 128
10.18 在输入框中输入指定内容 129
10.19 单击按钮 130
10.20 双击某个元素 130
10.21 操作单选下拉列表 131
10.21.1 遍历所有选项并打印选项显示的文本和选项值 131
10.21.2 选择下拉列表元素的三种方法 132
10.22 断言单选列表选项值 133
10.23 操作多选的选择列表 133
10.24 操作可以输入的下拉列表(输入的同时模拟按键) 134
10.25 操作单选框 135
10.26 操作复选框 136
10.27 断言页面源码中的关键字 137
10.28 对当前浏览器窗口截屏 138
10.29 拖拽页面元素 138
10.30 模拟键盘单个按键操作 139
10.31 模拟组合按键操作 140
10.31.1 通过WebDriver内建的模块模拟组合键 140
10.31.2 通过第三方模块模拟组合按键 141
10.31.3 通过设置剪贴板实现复制和粘贴 146
10.32 模拟鼠标右键 147
10.33 模拟鼠标左键按下与释放 148
10.34 保持鼠标悬停在某个元素上 149
10.35 判断页面元素是否存在 150
10.36 隐式等待 151
10.37 显式等待 152
10.38 显式等待中期望的场景 154
10.39 使用Title属性识别和操作新弹出的浏览器窗口 157
10.40 通过页面的关键内容识别和操作新浏览器窗口 159
10.41 操作Frame中的页面元素 160
10.42 使用Frame中的HTML源码内容操作Frame 162
10.43 操作IFrame中的页面元素 163
10.44 操作JavaScript的Alert弹窗 165
10.45 操作JavaScript的confirm弹窗 166
10.46 操作JavaScript的prompt弹窗 167
10.47 操作浏览器的Cookie 169
10.48 指定页面加载时间 170
第11章 WebDriver高级应用 172
11.1 使用JavaScript操作页面元素 172
11.2 操作Web页面的滚动条 173
11.3 在Ajax方式产生的浮动框中,单击选择包含某个关键字的选项 174
11.4 结束Windows中浏览器的进程 177
11.5 更改一个页面对象的属性值 178
11.6 无人工干预地自动下载某个文件 181
11.7 无人工干预地自动上传附件 183
11.7.1 使用WebDriver的send_keys方法上传文件 183
11.7.2 模拟键盘操作,实现上传文件 184
11.7.3 使用第三方工具AutoIt上传文件 187
11.8 右键另存为下载文件 192
11.9 操作日期控件 195
11.10 启动带有用户配置信息的Firefox浏览器窗口 196
11.11 UI对象库 199
11.12 操作富文本框 201
11.13 精确比较页面截图图片 207
11.14 高亮显示正在操作的页面元素 210
11.15 浏览器中新开标签页(Tab) 211
11.16 测试过程中发生异常或断言失败时进行屏幕截图 212
11.17 使用日志模块记录测试过程中的信息 215
11.18 封装操作表格的公用类 218
11.19 测试HTML5语言实现的视频播放器 221
11.20 在HTML5的画布元素上进行绘画操作 222
11.21 操作HTML5存储对象 223
11.22 使用Chrome浏览器自动将文件下载到指定路径 225
11.23 修改Chrome设置伪装成手机M站 226
11.24 屏蔽Chrome的--ignore-certificate-errors提示及禁用扩展插件并实现窗口最大化 228
11.25 禁用Chrome浏览器的PDF和Flash插件 229
11.26 禁用IE的保护模式 230
11.27 启动Firefox的同时打开Firebug 231
11.28 禁用Chrome浏览器中的Image加载 233
11.29 禁用Firefox浏览器中的CSS、Flash及Image加载 234
第三篇 自动化测试框架搭建篇 237
第12章 数据驱动测试 237
12.1 数据驱动概述 237
12.2 数据驱动单元测试的环境准备 237
12.3 使用unittest和ddt进行数据驱动 238
12.4 使用数据文件进行数据驱动 240
12.5 使用Excel进行数据驱动测试 247
12.6 使用XML进行数据驱动测试 250
12.7 使用MySQL数据库进行数据驱动测试 254
第13章 行为驱动测试 261
13.1 行为驱动开发和lettuce简介 261
13.2 行为驱动测试的环境准备 262
13.3 第一个英文语言行为驱动测试 263
13.4 通过类模式实现英文行为驱动 266
13.5 lettuce框架的步骤数据表格 269
13.6 使用WebDriver进行英文语言的行为数据驱动测试 272
13.7 使用WebDriver进行中文语言的行为数据驱动测试 275
13.8 批量执行行为驱动用例集 279
13.9 解决中文描述的场景输出到控制台乱码 283
第14章 Selenium Grid的使用 285
14.1 Selenium Grid简介 285
14.2 分布式自动化测试环境准备 286
14.3 Selenium Grid的使用方法 290
14.3.1 远程调用Firefox浏览器进行自动化测试 290
14.3.2 远程调用IE浏览器进行自动化测试 294
14.3.3 远程调用Chrome浏览器进行自动化测试 295
14.3.4 同时支持多个浏览器进行自动化测试 296
14.4 结合unittest完成分布式自动化测试 297
14.5 实现并发的分布式自动化测试 299
第15章 自动化测试框架的搭建及测试实战 303
15.1 自动化测试框架 303
15.2 数据驱动框架及实战 305
15.3 关键字驱动框架及实战 333
15.4 关键字&&数据混合驱动框架及实战 367
第四篇 常见问题和解决方法 405
第16章 自动化测试常见问题和解决方法 405
16.1 如何让WebDriver支持IE 11 405
16.2 解决“Unexpected error launching Internet Explorer.Browserzoom level was set to 75%(或其他百分比)”的错误 407
16.3 解决某些IE浏览器中输入数字和英文特别慢的问题 407
16.4 解决Firefox浏览器的can't access dead object异常 408
16.5 常见异常和解决方法 409