第1章 自动化测试概述 1
1.1自动化测试概念 1
1.1.1 UI层自动化测试 2
1.1.2 Service层自动化测试 2
1.1.3 Unit层自动化测试 3
1.2自动化测试可行性 3
1.3自动化测试工具介绍 4
1.3.1 Unified Functional Testing 4
1.3.2 Robot Framework 4
1.3.3 Selenium 4
1.4自动化测试与质量的关系 5
1.5本章小结 6
第2章 配置编程环境 7
2.1 Windows操作系统安装Python 3.7.2 7
2.1.1下载Windows版Python 7
2.1.2安装Python 8
2.1.3验证Python环境 9
2.2 Linux操作系统安装Python 3.7.2 10
2.2.1下载Linux版Python 10
2.2.2安装Python 10
2.2.3验证Python环境 11
2.3安装Selenium 11
2.3.1安装Selenium 11
2.3.2验证Selenium模块 12
2.4浏览器驱动 12
2.4.1 Chrome浏览器驱动 13
2.4.2 Firefox浏览器驱动 15
2.4.3 IE浏览器驱动 15
2.5第一个小程序 15
2.6本章小结 16
第3章 Python基础 17
3.1 Python基础之列表 17
3.1.1创建列表 17
3.1.2访问列表 18
3.1.3修改列表 19
3.1.4列表排序 21
3.1.5遍历列表 23
3.1.6创建数值列表 23
3.1.7列表解析 25
3.1.8切片 25
3.1.9使用切片遍历列表 26
3.1.10使用切片复制列表 26
3.1.11使用切片反转列表 27
3.1.12其他切片操作 27
3.2 Python基础之元组 27
3.2.1创建元组并访问元素 28
3.2.2元组和列表转换 28
3.3 Python基础之字典 28
3.3.1创建字典并访问元素 29
3.3.2添加键值对 29
3.3.3修改字典中的值 29
3.3.4删除键值对 30
3.3.5遍历字典 30
3.3.6嵌套 31
3.4 Python基础之字符串 32
3.4.1字符串实操 33
3.4.2合并(拼接)字符串 33
3.4.3删除空白 33
3.5 Python基础之文件 35
3.5.1读取整个文件 35
3.5.2逐行读取 36
3.5.3使用文件的内容 37
3.6 Python基础之函数 39
3.6.1定义函数 39
3.6.2向函数传参 39
3.6.3返回值 41
3.7 Python基础之类 42
3.7.1创建和使用类 42
3.7.2继承 43
3.8本章小结 43
第4章 元素定位 44
4.1元素定位概述 44
4.1.1元素定位工具 45
4.1.2元素HTML定位 46
4.2元素ID定位 48
4.2.1语法 48
4.2.2代码示例 49
4.3元素Name定位 49
4.3.1语法 50
4.3.2代码示例 50
4.4元素Class定位 50
4.4.1语法 51
4.4.2代码示例 51
4.5元素Tag定位 51
4.5.1语法 51
4.5.2代码示例 52
4.6元素Link定位 52
4.6.1语法 52
4.6.2代码示例 52
4.7元素Partial Link定位 53
4.7.1语法 53
4.7.2代码示例 53
4.8元素XPath定位 54
4.8.1 XPath含义 54
4.8.2 XPath基本语法 54
4.8.3获取元素XPath 57
4.8.4代码示例 58
4.9元素CSS定位 58
4.9.1 CSS定位语法 58
4.9.2获取元素css selector 58
4.9.3代码示例 59
4.10 By方法定位 60
4.11本章小结 60
第5章 单元测试框架Unittest 61
5.1 Unittest简介 61
5.1.1 Unittest主要结构 62
5.1.2代码示例一 62
5.1.3代码示例二 64
5.1.4 Python知识点补充 66
5.2 Unittest之subTest() 67
5.2.1测试场景 67
5.2.2代码示例 67
5.3 Unittest常用断言 69
5.3.1断言方法 69
5.3.2代码示例 70
5.4 Unittest之装饰器 75
5.4.1装饰器代码示例 75
5.4.2自定义执行顺序代码示例 76
5.4.3非Unittest下的测试方法使用Unittest框架 77
5.5单元测试执行方式 77
5.5.1 Unittest.main() 78
5.5.2 TestLoader() 78
5.5.3 TestSuite().addTest(TestClass(TestMethod)) 79
5.5.4 TestLoader().discover(“path”,“filesname”) 80
5.6 Unittest命令行执行测试 80
5.6.1执行测试模块/类/方法 81
5.6.2 Test Discovery 82
5.6.3 Unittest重要参数 83
5.6.4命令示例 83
5.7本章小结 84
第6章 单元测试框架Pytest 85
6.1 Pytest介绍 85
6.1.1安装Pytest 85
6.1.2查看Pytest 86
6.1.3 Pytest示例 87
6.1.4 Pytest规则 88
6.2 Pytest命令行执行测试 88
6.2.1查看Pytest参数 89
6.2.2 Pytest重要参数 94
6.3用例运行级别 95
6.4 Pytest测试报告 95
6.5本章小结 97
第7章 集成开发环境 98
7.1 PyCharm集成开发环境 98
7.1.1下载与安装 98
7.1.2创建项目 99
7.1.3环境验证 101
7.2 Eclipse集成开发环境 102
7.2.1下载与安装 102
7.2.2安装PyDev 103
7.2.3配置PyDev 106
7.2.4创建项目 108
7.2.5环境验证 109
7.3 Anaconda集成开发环境 112
7.3.1下载与安装 112
7.3.2创建新的Python环境 113
7.3.3环境验证 115
7.4本章小结 116
第8章 Page Object模式 117
8.1 PO模式简介 117
8.1.1非PO模式下的隐患 117
8.1.2 PO模式下的优势 118
8.2传统PO模式 118
8.2.1传统PO模式简介 118
8.2.2代码示例 118
8.2.3执行结果 122
8.3框架层PO模式 122
8.3.1框架层PO模式简介 122
8.3.2代码示例 122
8.3.3执行结果 127
8.4本章小结 128
第9章 HTML测试报告 129
9.1 HTMLTestRunner 129
9.1.1获取HTMLTestRunner模块 130
9.1.2 Python 3版本的HTMLTestRunner 130
9.1.3生成HTML测试报告代码示例 131
9.2 Allure 132
9.2.1 Allure模块及所需组件安装 133
9.2.2执行测试并生成结果 134
9.2.3安装Allure Command Line 135
9.2.4生成HTML测试报告代码示例 138
9.3 BeautifulReport 140
9.3.1获取BeautifulReport模块 141
9.3.2生成HTML测试报告代码示例 141
9.3.3 BeautifulReport深度使用 143
9.4本章小结 144
第10章 Python多线程 145
10.1单线程执行任务 145
10.2多线程和多进程 146
10.2.1多线程执行任务 146
10.2.2参数化多线程 148
10.2.3多进程执行任务 149
10.3本章小结 151
第11章 高级应用 152
11.1控制浏览器 152
11.1.1场景展示 152
11.1.2方法封装 153
11.1.3方法调用 154
11.1.4方法扩展 155
11.2模拟鼠标 156
11.2.1方法封装 157
11.2.2方法调用 157
11.3模拟键盘 158
11.3.1安装Pywin32 158
11.3.2方法封装 158
11.3.3方法调用 162
11.4 PyUserInput模拟鼠标键盘操作 163
11.4.1 PyUserInput安装 163
11.4.2 PyUserInput模拟键盘 164
11.4.3 PyUserInput模拟鼠标 165
11.5模拟剪切板 166
11.5.1方法封装 166
11.5.2方法调用 167
11.6等待元素 167
11.6.1强制等待 168
11.6.2隐式等待 168
11.6.3显式等待 168
11.6.4方法扩展 172
11.7处理Iframe控件 172
11.7.1方法封装 173
11.7.2方法调用 173
11.8处理弹窗控件 174
11.8.1方法封装 174
11.8.2方法调用 174
11.9处理下拉菜单控件 176
11.9.1方法封装 176
11.9.2方法调用 176
11.9.3方法扩展 177
11.10上传文件 177
11.10.1常规方法上传 177
11.10.2借助AutoIt实现上传 178
11.10.3模拟键盘实现上传 183
11.11日志 183
11.11.1方法封装 183
11.11.2方法调用 185
11.12处理Cookies 188
11.12.1方法封装 188
11.12.2方法调用 189
11.13借助JS完成任务 190
11.13.1方法封装 190
11.13.2方法调用 192
11.14处理表格 192
11.14.1方法封装 193
11.14.2方法调用 195
11.14.3思路扩展 195
11.15 处理多窗口 196
11.16页面截图 197
11.17兼容性测试方法 198
11.18杀浏览器进程 199
11.19禁用IE的保护模式 202
11.20屏蔽ignore-certificate-errors提示及禁用扩展插件 203
11.21禁用Firefox加载CSS/Flash/Image 203
11.22浏览器静默模式启动 206
11.23本章小结 206
第12章 数据驱动测试 207
12.1 Unittest&DDT 207
12.1.1安装DDT 207
12.1.2测试代码示例 208
12.2 Unittest&DDT&MySQL 212
12.2.1安装pymysql 213
12.2.2安装MySQL 213
12.2.3封装操作数据库方法 219
12.2.4测试数据分离 221
12.2.5封装方法验证 222
12.2.6测试代码示例 224
12.3 Unittest&DDT&XML 226
12.3.1数据XML 226
12.3.2封装解析XML文件方法 226
12.3.3测试代码示例 228
12.4 Unittest&DDT&JSON 229
12.4.1列表数据 230
12.4.2字典数据 231
12.5 Unittest&DDT&Excel 233
12.5.1安装openpyxl 233
12.5.2 Excel格式数据 234
12.5.3封装解析Excel文件方法 234
12.5.4测试代码示例 235
12.6 Unittest&parameterized 236
12.6.1安装parameterized 236
12.6.2测试代码示例 237
12.7本章小结 238
第13章 辅助工具介绍 240
13.1 Selenium IDE 240
13.1.1 Selenium IDE下载 240
13.1.2 Selenium IDE录制与回放 241
13.2 Katalon Recorder 243
13.2.1 Katalon Recorder下载 243
13.2.2 Katalon Recorder录制与回放 244
13.2.3测试脚本导出 244
13.3 ChroPath 246
13.3.1获取ChroPath 246
13.3.2 ChroPath获取XPath和CSS定位 247
13.4本章小结 248
第14章 Jenkins持续集成 249
14.1 Jenkins安装 249
14.2配置Jenkins 252
14.3 Jenkins创建任务 254
14.4配置Github 256
14.5本章小结 257
第15章 Selenium Grid分布式自动化测试 258
15.1环境准备 258
15.1.1下载并配置JDK 259
15.1.2下载并运行selenium-server-standalone 260
15.2 HUB与Node 261
15.2.1启动HUB 261
15.2.2启动Node 263
15.3环境验证 267
15.4本章小结 268