元组30
3.1.5字典31
3.1.6集合32
3.2顺序、分支、循环语句32
3.2.1顺序语句32
3.2.2分支语句33
3.2.3循环语句34
3.3Python函数、模块35
3.3.1创建函数36
3.3.2函数参数36
3.3.3Python模块44
3.4面向对象编程44
3.4.1类和实例46
3.4.2继承和多态49
3.5Python中的os模块51
3.6Python中的time模块53
3.7文件读写55
3.7.1Python中的open函数56
3.7.2JSON文件58
3.7.3YAML文件63
3.7.4CSV文件65
第4章前端知识储备
4.1HTML基础知识68
4.1.1创建HTML文件68
4.1.2HTML元素69
4.1.3HTML元素属性71
4.1.4复杂元素71
4.2CSS相关知识76
4.2.1CSS基础76
4.2.2CSS选择器77
4.3JavaScript相关知识78
4.3.1JavaScript基础概念78
4.3.2JavaScriptHTMLDOM79
4.4XML相关知识80
4.4.1XML简介80
4.4.2XML树结构81
4.4.3XPath83
第5章Selenium基础方法
5.1Selenium常用方法86
5.1.1打开、关闭浏览器87
5.1.2访问某个网址87
5.1.3网页的和后退88
5.1.4刷新浏览器页面89
5.1.5浏览器窗口大化、小化和全屏89
5.1.6获取、设置浏览器窗口的大小90
5.1.7获取、设置浏览器窗口的位置91
5.1.8获取页面的title91
5.1.9获取当前页面的URL地址92
5.1.10获取页面的源码93
5.1.11多窗口操作(Selenium3)94
5.1.12多窗口操作(Selenium4)96
5.1.13浏览器方法和属结96
5.2Selenium元素定位方法97
5.2.1页面元素定位方法概览98
5.2.2使用id定位元素99
5.2.3使用name定位元素100
5.2.4使用classname定位元素101
5.2.5使用tagname定位元素101
5.2.6使用链接的全部文字定位元素103
5.2.7使用部分链接文字定位元素104
5.2.8使用XPath定位元素105
5.2.9使用CSS定位元素105
5.2.10使用find_element('locator','value')定位元素106
5.2.11定位组元素107
5.2.12XPath和CSSselector精讲110
5.2.13Selenium4的相对定位器117
5.2.14元素定位“没有银弹”118
5.3获取页面元素的相关信息122
5.3.1获取元素的基本信息123
5.3.2获取元素的属123
5.3.3获取元素的CSS属性值124
5.3.4判断页面元素是否可见125
5.3.5判断页面元素是否可用127
5.3.6判断元素的选中状态128
5.4鼠标操作实战129
5.4.1鼠标单击操作129
5.4.2内置鼠标操129
5.4.3鼠标双击操作130
5.4.4鼠标右击操作130
5.4.5鼠标指针悬浮操作131
5.4.6鼠标拖动操作131
5.4.7其他鼠标操作132
5.5键盘操作133
5.5.1文字输入133
5.5.2组合键133
第6章常见控件实战
6.1搜索框137
6.2按钮138
6.3复选框141
6.4链接143
6.5select下拉列表144
6.6input下拉列表152
6.7表格154
6.8框架158
6.9JavaScript弹窗164
6.10非JavaScript弹窗168
6.11日期时间控件170
6.12文件下载171
6.13文件上传177
第7章Selenium高级应用
7.1复杂控件的操作182
7.1.1操作Ajax选项182
7.1.2操作富文本编辑器183
7.1.3滑动滑块操作186
7.2WebDriver的特殊操作188
7.2.1元素class含空格188
7.2.2property、attribute、text的区别190
7.2.3定位动态id192
7.2.4操作cookie193
7.2.5能199
7.2.6获取焦点元素202
7.2.7颜色验证202
7.3JavaScript的应用203
7.3.1操作页面元素204
7.3.2修改页面元素属性204
7.3.3操作滚动条205
7.3.4高亮显示正在作的页面元素207
7.3.5操作span类型元素208
7.4浏览器定制启动参数209
7.5AutoIt的应用213
7.6重要的异常217
第8章Selenium等待机制
8.1影响元素加载的外部因素221
8.2Selenium强制等待222
8.3Selenium隐性等待223
8.4Selenium显性等待226
第9章线性测试脚本
9.1Redmine系统243
9.1.1下载和安装243
9.1.2常见错误246
9.1.3Redmine系统的启动和关闭247
9.1.4Redmine简单使用249
9.2线性脚本251
第10章unittest测试框架
10.1unittest框架结构256
10.2测试固件258
10.3编写测例260
10.4执行测例260
10.5用例执行次序263
10.6内置装饰器266
10.7命令行执行测试268
10.8批量执行测试文件270
10.9测试断言272
10.10测试报告273
10.11unittest与Selenium276
10.12unittest参数化279
10.12.1unittest+DDT279
10.12.2unittest+parameterized281
第11章Pytest测试框架
11.1Pytest框架简介284
11.2Pytest测试固件286
11.3Pytest测例和断言290
11.4Pytest框架测试执行292
11.4.1使用main函数执行292
11.4.2在命令行窗口中执行294
11.5Pytest框架用例执行失败重试295
11.6标记机制298
11.6.1对测行分级298
11.6.2跳过某些用例300
11.7全局设置301
11.8测试报告304
11.8.1pytest-html测试报告304
11.8.2Allure测试报告307
11.9Pytest与Selenium312
11.10Pytest参数化315
第12章PO设计模式
12.1PO方案一318
12.2PO方案二324
12.3项目变更应对330
第13章测试框架开发
13.1测试数据分离336
13.2测试配置分离338
13.3SeleniumAPI封装341
13.4测试报告346
第14章项目实战
14.1测试计划348
14.2测例349
14.3测试脚本351
14.4反思:测试数据358
14.4.1测试数据准备358
14.4.2冗余数据处理359
第15章持续集成
15.1Git应用364
15.1.1Git安装365
15.1.2Git基本操作366
15.1.3GitLab部署369
15.1.4Git远端仓库373
15.2Jenkins应用374
15.2.1Jenkins部署375
15.2.2管理插件378
15.2.3创建任务379
15.2.4命令行启动Jenkins381
15.2.5设置项目执行频率383
15.2.6配置邮件384
15.2.7配置钉钉386
15.3自动化测试持续集成389
第16章提升效率
16.1立足根本394
16.2另辟蹊径395
16.2.1无头浏览器395
16.2.2不关闭浏览器396
16.3着眼未来397
16.3.1分布式执行398
16.3.2Docker技术402