第一篇基础篇
第1章 Selenium简介 1
1.1 Selenium的前世今生 1
1.2 Selenium工具套件介绍 2
1.3 Selenium 1和Selenium 2支持的浏览器和平台 2
1.3.1 Selenium IDE、Selenium 1和Selenium RC支持的浏览器和平台 2
1.3.2 Selennium 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和WebDriver的特点 6
第2章 自动化测试的那点事儿 7
2.1 自动化测试目标 7
2.2 管理层的支持 10
2.3 投入产出比 10
2.4 敏捷开发中的自动化测试应用 11
2.5 自动化测试人员分工 13
2.6 自动化测试工具的选择和推广使用 13
2.6.1 自动化测试工具的选择 13
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插件的使用 19
3.3.1 启动Firebug插件 20
3.3.2 Firebug插件的常用功能 20
3.4 安装FirePath插件 22
3.5 FirePath插件的使用 23
3.5.1 FirePath插件中使用XPath定位方式 23
3.5.1 FirePath插件中使用CSS定位方式 25
3.6 IE浏览器自带的辅助开发工具 27
第4章 Selenium IDE 29
4.1 什么是Selenium IDE 29
4.2 安装Selenium IDE 29
4.2.1 从Selenium官网安装 29
4.2.2 使用下载的XPI安装文件安装 31
4.3 Selenium IDE插件界面和功能介绍 31
4.3.1 主界面 31
4.3.2 常用工具栏 32
4.3.3 脚本编辑区域 32
4.4 常用菜单项 32
4.4.1 “文件”菜单 32
4.4.2 “编辑”菜单 33
4.4.3 Actions菜单 33
4.4.4 Options菜单 34
4.5 录制和回放的脚本实例 35
4.6 Selenium IDE脚本介绍——Selenese 37
4.7 Selenium IDE的基本命令使用实例 38
4.7.1 waitforText、verifyText和assertText命令 38
4.7.2 storeTitle和echo命令 41
4.7.3 openWindow和selectWindow命令 41
4.8 从Selenium IDE导出脚本 42
4.8.1 导出脚本文件 42
4.8.2 将Selenium IDE插件中的某行脚本导出为Java脚本 44
第5章 搭建Java环境和Eclipse集成开发环境 45
5.1 安装Java JDK,配置Java环境 45
5.1.1 下载JDK 1.6版本安装文件 45
5.1.2 安装JDK 1.6版本 47
5.1.3 配置Java环境变量 48
5.2 安装Java IDE开发工具Eclipse 51
5.3 新建一个Java工程和一个类 53
5.4 Eclipse集成开发环境的使用技巧 56
5.4.1 将程序代码和注释字体变大 56
5.4.2 自动补全功能 57
第6章 WebDriver的安装配置 58
6.1 在Eclipse中配置WebDriver 58
6.2 第一个WebDriver脚本 61
第7章 单元测试框架的基本使用介绍 63
7.1 什么是单元测试 63
7.2 JUnit单元测试框架 63
7.2.1 什么是JUnit 63
7.2.2 安装JUnit 4 63
7.2.3 JUnit的常见注解 65
7.2.4 创建JUnit 4 Test Suite 70
7.2.5 使用JUnit编写的WebDriver脚本 72
7.3 TestNG单元测试框架 73
7.3.1 什么是TestNG 73
7.3.2 TestNG的优点 74
7.3.3 编写TestNG测试用例的步骤 74
7.3.4 安装TestNg 74
7.3.5 在TestNG中运行第一个WebDriver测试用例 77
7.3.6 TestNG 的常用注解 81
7.3.7 测试集合 85
7.3.8 测试用例的分组 87
7.3.9 依赖测试 90
7.3.10 特定顺序执行测试用例 91
7.3.11 跳过某个测试方法 92
7.3.12 测试报告中的自定义日志 93
7.3.13 断言 94
第8章 页面元素的定位方法 97
8.1 定位页面元素方法的汇总 97
8.2 使用ID定位 97
8.3 使用name定位 98
8.4 使用链接的全部文字定位 99
8.5 使用部分链接文字定位 99
8.6 使用标签名称定位 100
8.7 使用Class名称定位 101
8.8 使用XPath定位 101
8.8.1 什么是XPath 101
8.8.2 XPath语法 102
8.9 CSS定位 107
8.9.1 什么是CSS 107
8.9.2 CSS语法 107
8.9.3 XPath定位和CSS定位的比较 111
8.10 jQuery定位 112
8.10.1 什么是jQuery 112
8.10.2 jQuery的定位代码实例 112
8.11 表格的定位方法 114
8.11.1 遍历表格的全部单元格 114
8.11.2 定位表格中的某个单元格 116
8.11.3 定位表格中的子元素 117
第二篇 实战应用篇
第9章 WebDriver的多浏览器测试 119
9.1 使用IE浏览器进行测试 119
9.2 使用Firefox浏览器进行测试 120
9.3 使用Chrome浏览器进行测试 121
9.4 使用Mac系统中的Safari浏览器进行测试 122
9.5 使用TestNG进行并发兼容性测试 123
第10章 WebDriver API实例详解 127
10.1 访问某网页地址 127
10.2 返回上一个访问的网页(模拟单击浏览器的后退功能) 127
10.3 从上次访问网页前进到下一个网页(模拟浏览器的前进功能) 128
10.4 刷新当前网页 128
10.5 操作浏览器窗口 128
10.6 获取页面的Title属性 129
10.7 获取页面的源代码 129
10.8 获取当前页面的URL地址 130
10.9 在输入框中清除原有的文字内容 130
10.10 在输入框中输入指定内容 131
10.11 单击按钮 131
10.12 双击某个元素 132
10.13 操作单选下拉列表 132
10.14 检查单选列表的选项文字是否符合期望 133
10.15 操作多选的选择列表 134
10.16 操作单选框 135
10.17 操作复选框 136
10.18 杀掉Windows的浏览器进程 137
10.19 将当前浏览器的窗口截屏 137
10.20 检查页面元素的文本内容是否出现 138
10.21 执行JavaScript脚本 138
10.22 拖曳页面元素 139
10.23 模拟键盘的操作 139
10.24 模拟鼠标右键事件 140
10.25 在指定元素上方进行鼠标悬浮 140
10.26 在指定元素上进行鼠标单击左键和释放的操作 142
10.27 查看页面元素的属性 143
10.28 获取页面元素的CSS属性值 143
10.29 隐式等待 144
10.30 常用的显式等待 145
10.31 自定义的显式等待 146
10.32 判断页面元素是否存在 148
10.33 使用Title属性识别和操作新弹出浏览器窗口 149
10.34 使用页面的文字内容识别和处理新弹出的浏览器窗口 150
10.35 操作JavaScript的Alert弹窗 151
10.36 操作JavaScript的confirm弹窗 152
10.37 操作JavaScript的prompt弹框 153
10.38 操作Frame中的页面元素 154
10.39 使用Frame中的HTML源码内容来操作Frame 156
10.40 操作IFrame中的页面元素 157
10.41 操作浏览器的Cookie 159
第11章 WebDriver的高级应用实例 160
11.1 使用JavaScriptExecutor单击元素 160
11.2 在Ajax方式产生的浮动框中,单击选择包含某个关键字的选项 161
11.3 设置一个页面对象的属性值 163
11.4 在日期选择器上进行日期选择 165
11.5 如何能够无人工接入的自动化下载某个文件 166
11.6 使用sendKeys方法上传一个文件附件 169
11.7 使用第三方工具AutoIt上传文件 170
11.8 操作Web页面的滚动条 175
11.9 启动带有用户配置信息的Firefox浏览器窗口 177
11.10 Robot对象操作键盘 179
11.11 对象库(UI Map) 182
11.12 操作富文本框 185
11.13 精确比较网页截图图片 189
11.14 高亮显示正在被操作的页面元素 191
11.15 在测试中断言失败的步骤进行屏幕截图 193
11.16 使用Log4j在测试过程中打印执行日志 198
11.17 封装操作表格的公用类 202
11.18 控制HTML5语言实现的视频播放器 205
11.19 在HTML 5的画布元素上进行绘画操作 207
11.20 操作HTML 5的存储对象 209
第三篇 自动化测试框架搭建篇
第12章 数据驱动测试 211
12.1 什么是数据驱动 211
12.2 使用TestNG进行数据驱动 211
12.3 使用TestNG和CSV文件进行数据驱动 214
12.4 使用TestNG、Apache POI和Excel文件进行数据驱动测试 216
12.5 使用MySQL数据库实现数据驱动测试 219
第13章 页面对象(Page Object)模式 224
13.1 页面对象模式简介 224
13.2 使用PageFactory类 225
13.2.1 使用PageFactory类给测试类提供待操作的页面元素 225
13.2.2 使用PageFactory类封装页面元素的操作方法 226
13.3 使用LoadableComponent类 228
13.4 多个PageObject的自动化测试实例 230
第14章 行为驱动测试 237
14.1 行为驱动开发和Cucumber简介 237
14.2 Cucumber在Eclipse中的环境搭建 238
14.3 在Eclipse中使用Junit和英文语言进行行为驱动测试 240
14.4 在Eclipse中使用JUnit和中文语言进行行为驱动测试 247
第15章 Selenium-Grid的使用 251
15.1 Selenium Grid简介 251
15.2 Selenium Grid的使用方法 252
15.2.1 远程使用FireFox浏览器进行自动化测试 252
15.2.2 远程使用IE浏览器自动化测试 256
15.3 通过TestNG使用Firefox、IE和Chrome浏览器进行并发的远程自动化测试 258
15.3.1 使用静态类实现并发的远程自动化测试 259
15.3.2 通过TestNG的配置文件参数方法进行远程并发自动化测试 262
15.4 使用Selenium Grid时,在远程节点计算机进行 屏幕截屏 267
第16章 自动化测试框架的Step By Step搭建及测试实战 270
16.1 什么是自动化测试框架 270
16.2 数据驱动框架及实战 272
16.3 关键字框架搭建及实战 303
第四篇 常见问题和解决方法
第17章 自动化测试常见问题和解决方法 365
17.1 如何让WebDriver支持IE 11? 365
17.2 “Unexpected error launching Internet Explorer. Browser zoom
level was set to 75%(或其他百分比)”的错误如何解决 366
17.3 如何消除Chrome浏览中的--ignore-certificate-errors提示 367
17.4 为什么在某些IE浏览器中输入数字和英文特别慢 367
17.5 常见异常和解决方法 368