Python實(shí)現(xiàn)Web UI自動(dòng)化測試實(shí)戰(zhàn):Selenium 3 4+unittest Pyte
《Python實(shí)現(xiàn)Web UI自動(dòng)化測試實(shí)戰(zhàn):Selenium 3/4+unittest/Pytest+GitLab+Jenkins》主要介紹如何基于Python使用Selenium、unittest、Pytest、GitLab、Jenkins等工具實(shí)現(xiàn)Web UI自動(dòng)化測試,以幫助讀者提升測試水平!禤ython實(shí)現(xiàn)Web UI自動(dòng)化測試實(shí)戰(zhàn):Selenium 3/4+unittest/Pytest+GitLab+Jenkins》第1章簡要介紹自動(dòng)化測試的相關(guān)概念和思路、Selenium的特點(diǎn)和發(fā)展歷史、WebDriver的原理,以及Selenium IDE的簡單應(yīng)用。第2章和第3章介紹與Python相關(guān)的基礎(chǔ)知識(shí),為后續(xù)內(nèi)容的講解做準(zhǔn)備。第4章~第15章詳細(xì)介紹使用各種框架進(jìn)行自動(dòng)化測試的方法和實(shí)戰(zhàn)案例,幫助讀者進(jìn)一步掌握自動(dòng)化測試技能。第16章從實(shí)際情況出發(fā),介紹提升自動(dòng)化測試用例執(zhí)行效率的幾種常見方法,供讀者在實(shí)際操作中參考。
本書適合計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生、測試行業(yè)的從業(yè)人員和希望提升自動(dòng)化測試實(shí)戰(zhàn)水平的技術(shù)人員閱讀。
1.詳細(xì)解讀Python與自動(dòng)化測試基礎(chǔ)知識(shí)
2.深入講解自動(dòng)化測試使用原理及項(xiàng)目實(shí)戰(zhàn)
3.解析自動(dòng)化測試效率提高方案
4.詳細(xì)講解官方推薦框架unittest及pytest
5.擴(kuò)展持續(xù)集成、提升自動(dòng)化效率等內(nèi)容拓展讀者視野
6.提供圖書中的源代碼及學(xué)習(xí)資料
Storm(杜子龍),先后就職于華為、聯(lián)想、Aicent、國能信息等公司,擁有十余年的軟件測試從業(yè)經(jīng)驗(yàn),對接口測試、UI 自動(dòng)化測試、性能測試等均有一定積累,曾參與Android OS 系統(tǒng)、醫(yī)療SaaS系統(tǒng)、商旅系統(tǒng)等多個(gè)大型項(xiàng)目。
李鯤程,黑龍江人,畢業(yè)于北京郵電大學(xué),軟件工程碩士。現(xiàn)就職于中國信息通信研究院數(shù)據(jù)研究中心大數(shù)據(jù)技術(shù)部,高級(jí)工程師。長期從事軟件開發(fā)、大數(shù)據(jù)系統(tǒng)運(yùn)維與數(shù)據(jù)分析等工作。著有《Visual C++ 打印編程技術(shù)與工程實(shí)踐》等圖書和《基于關(guān)鍵詞進(jìn)行文本分類的研究與應(yīng)用》等多篇論文。
邊宇明,2011 年參加工作,先后在中國銀行、國能信息等公司從事軟件測試工作,對白盒測試、自動(dòng)化測試有一定的研發(fā)經(jīng)驗(yàn)。
第 1章 自動(dòng)化測試簡介
1.1 什么是自動(dòng)化測試 2
1.2 Selenium簡介 3
1.2.1 Selenium的特點(diǎn) 3
1.2.2 Selenium發(fā)展歷史 3
1.2.3 WebDriver組件 4
1.3 Selenium IDE 5
1.3.1 Selenium Firefox IDE 6
1.3.2 Katalon Recorder插件 9
1.4 WebDriver腳本示例 10
第 2章 測試環(huán)境準(zhǔn)備
2.1 Windows操作系統(tǒng)測試環(huán)境搭建 13
2.1.1 Python 13
2.1.2 Selenium 16
2.1.3 PyCharm 18
2.2 macOS操作系統(tǒng)測試環(huán)境搭建 23
2.3 開發(fā)者工具簡介 24
2.3.1 Chrome DevTools 24
2.3.2 Firefox DevTools 25
第3章 Python知識(shí)儲(chǔ)備
3.1 Python基本數(shù)據(jù)類型 27
3.1.1 數(shù)值 27
3.1.2 字符串 28
3.1.3 列表 29
3.1.4 元組 30
3.1.5 字典 31
3.1.6 集合 32
3.2 順序、分支、循環(huán)語句 32
3.2.1 順序語句 32
3.2.2 分支語句 33
3.2.3 循環(huán)語句 34
3.3 Python函數(shù)、模塊 35
3.3.1 創(chuàng)建函數(shù) 36
3.3.2 函數(shù)參數(shù) 36
3.3.3 Python模塊 44
3.4 面向?qū)ο缶幊?44
3.4.1 類和實(shí)例 46
3.4.2 繼承和多態(tài) 49
3.5 Python中的os模塊 51
3.6 Python中的time模塊 53
3.7 文件讀寫 55
3.7.1 Python中的open函數(shù) 56
3.7.2 JSON文件 58
3.7.3 YAML文件 63
3.7.4 CSV文件 65
第4章 前端知識(shí)儲(chǔ)備
4.1 HTML基礎(chǔ)知識(shí) 68
4.1.1 創(chuàng)建HTML文件 68
4.1.2 HTML元素 69
4.1.3 HTML元素屬性 71
4.1.4 復(fù)雜元素 71
4.2 CSS相關(guān)知識(shí) 76
4.2.1 CSS基礎(chǔ) 76
4.2.2 CSS選擇器 77
4.3 JavaScript相關(guān)知識(shí) 78
4.3.1 JavaScript基礎(chǔ)概念 78
4.3.2 JavaScript HTML DOM 79
4.4 XML相關(guān)知識(shí) 80
4.4.1 XML簡介 80
4.4.2 XML樹結(jié)構(gòu) 81
4.4.3 XPath 83
第5章 Selenium 基礎(chǔ)方法
5.1 Selenium常用方法 86
5.1.1 打開、關(guān)閉瀏覽器 87
5.1.2 訪問某個(gè)網(wǎng)址 87
5.1.3 網(wǎng)頁的前進(jìn)和后退 88
5.1.4 刷新瀏覽器頁面 89
5.1.5 瀏覽器窗口最大化、最小化和全屏 89
5.1.6 獲取、設(shè)置瀏覽器窗口的大小 90
5.1.7 獲取、設(shè)置瀏覽器窗口的位置 91
5.1.8 獲取頁面的title 91
5.1.9 獲取當(dāng)前頁面的URL地址 92
5.1.10 獲取頁面的源碼 93
5.1.11 多窗口操作(Selenium 3) 94
5.1.12 多窗口操作(Selenium 4) 96
5.1.13 瀏覽器方法和屬性總結(jié) 96
5.2 Selenium元素定位方法 97
5.2.1 頁面元素定位方法概覽 98
5.2.2 使用id定位元素 99
5.2.3 使用name定位元素 100
5.2.4 使用class name定位元素 101
5.2.5 使用tag name定位元素 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.12 XPath和CSS selector精講 110
5.2.13 Selenium 4的相對定位器 117
5.2.14 元素定位“沒有銀彈” 118
5.3 獲取頁面元素的相關(guān)信息 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 判斷元素的選中狀態(tài) 128
5.4 鼠標(biāo)操作實(shí)戰(zhàn) 129
5.4.1 鼠標(biāo)單擊操作 129
5.4.2 內(nèi)置鼠標(biāo)操作包 129
5.4.3 鼠標(biāo)雙擊操作 130
5.4.4 鼠標(biāo)右擊操作 130
5.4.5 鼠標(biāo)指針懸浮操作 131
5.4.6 鼠標(biāo)拖動(dòng)操作 131
5.4.7 其他鼠標(biāo)操作匯總 132
5.5 鍵盤操作 133
5.5.1 文字輸入 133
5.5.2 組合鍵 133
第6章 常見控件實(shí)戰(zhàn)
6.1 搜索框 137
6.2 按鈕 138
6.3 復(fù)選框 141
6.4 鏈接 143
6.5 select下拉列表 144
6.6 input下拉列表 152
6.7 表格 154
6.8 框架 158
6.9 JavaScript彈窗 164
6.10 非JavaScript彈窗 168
6.11 日期時(shí)間控件 170
6.12 文件下載 171
6.13 文件上傳 177
第7章 Selenium高級(jí)應(yīng)用
7.1 復(fù)雜控件的操作 182
7.1.1 操作Ajax選項(xiàng) 182
7.1.2 操作富文本編輯器 183
7.1.3 滑動(dòng)滑塊操作 186
7.2 WebDriver的特殊操作 188
7.2.1 元素class值包含空格 188
7.2.2 property、attribute、text的區(qū)別 190
7.2.3 定位動(dòng)態(tài)id 192
7.2.4 操作cookie 193
7.2.5 截圖功能 199
7.2.6 獲取焦點(diǎn)元素 202
7.2.7 顏色驗(yàn)證 202
7.3 JavaScript的應(yīng)用 203
7.3.1 操作頁面元素 204
7.3.2 修改頁面元素屬性 204
7.3.3 操作滾動(dòng)條 205
7.3.4 高亮顯示正在被操作的頁面元素 207
7.3.5 操作span類型元素 208
7.4 瀏覽器定制啟動(dòng)參數(shù) 209
7.5 AutoIt的應(yīng)用 213
7.6 重要的異常 217
第8章 Selenium等待機(jī)制
8.1 影響元素加載的外部因素 221
8.2 Selenium強(qiáng)制等待 222
8.3 Selenium隱性等待 223
8.4 Selenium顯性等待 226
第9章 線性測試腳本
9.1 Redmine系統(tǒng) 243
9.1.1 下載和安裝 243
9.1.2 常見錯(cuò)誤 246
9.1.3 Redmine系統(tǒng)的啟動(dòng)和關(guān)閉 247
9.1.4 Redmine簡單使用 249
9.2 線性腳本 251
第 10章 unittest測試框架
10.1 unittest框架結(jié)構(gòu) 256
10.2 測試固件 258
10.3 編寫測試用例 260
10.4 執(zhí)行測試用例 260
10.5 用例執(zhí)行次序 263
10.6 內(nèi)置裝飾器 266
10.7 命令行執(zhí)行測試 268
10.8 批量執(zhí)行測試文件 270
10.9 測試斷言 272
10.10 測試報(bào)告 273
10.11 unittest與Selenium 276
10.12 unittest參數(shù)化 279
10.12.1 unittest + DDT 279
10.12.2 unittest + parameterized 281
第 11章 Pytest測試框架
11.1 Pytest框架簡介 284
11.2 Pytest測試固件 286
11.3 Pytest測試用例和斷言 290
11.4 Pytest框架測試執(zhí)行 292
11.4.1 使用main函數(shù)執(zhí)行 292
11.4.2 在命令行窗口中執(zhí)行 294
11.5 Pytest框架用例執(zhí)行失敗重試 295
11.6 標(biāo)記機(jī)制 298
11.6.1 對測試用例進(jìn)行分級(jí) 298
11.6.2 跳過某些用例 300
11.7 全局設(shè)置 301
11.8 測試報(bào)告 304
11.8.1 pytest-html測試報(bào)告 304
11.8.2 Allure測試報(bào)告 307
11.9 Pytest與Selenium 312
11.10 Pytest參數(shù)化 315
第 12章 PO設(shè)計(jì)模式
12.1 PO方案一 318
12.2 PO方案二 324
12.3 項(xiàng)目變更應(yīng)對 330
第 13章 測試框架開發(fā)
13.1 測試數(shù)據(jù)分離 336
13.2 測試配置分離 338
13.3 Selenium API封裝 341
13.4 測試報(bào)告 346
第 14章 項(xiàng)目實(shí)戰(zhàn)
14.1 測試計(jì)劃 348
14.2 測試用例 349
14.3 測試腳本 351
14.4 反思:測試數(shù)據(jù) 358
14.4.1 測試數(shù)據(jù)準(zhǔn)備 358
14.4.2 冗余數(shù)據(jù)處理 359
第 15章 持續(xù)集成
15.1 Git應(yīng)用 364
15.1.1 Git安裝 365
15.1.2 Git基本操作 366
15.1.3 GitLab部署 369
15.1.4 Git遠(yuǎn)端倉庫 373
15.2 Jenkins應(yīng)用 374
15.2.1 Jenkins部署 375
15.2.2 管理插件 378
15.2.3 創(chuàng)建任務(wù) 379
15.2.4 命令行啟動(dòng)Jenkins 381
15.2.5 設(shè)置項(xiàng)目執(zhí)行頻率 383
15.2.6 配置郵件 384
15.2.7 配置釘釘 386
15.3 自動(dòng)化測試持續(xù)集成 389
第 16章 提升效率
16.1 立足根本 394
16.2 另辟蹊徑 395
16.2.1 無頭瀏覽器 395
16.2.2 不關(guān)閉瀏覽器 396
16.3 著眼未來 397
16.3.1 分布式執(zhí)行 398
16.3.2 Docker技術(shù) 402