Python實現(xiàn)Web UI自動化測試實戰(zhàn):Selenium 3 4+unittest Pyte
《Python實現(xiàn)Web UI自動化測試實戰(zhàn):Selenium 3/4+unittest/Pytest+GitLab+Jenkins》主要介紹如何基于Python使用Selenium、unittest、Pytest、GitLab、Jenkins等工具實現(xiàn)Web UI自動化測試,以幫助讀者提升測試水平!禤ython實現(xiàn)Web UI自動化測試實戰(zhàn):Selenium 3/4+unittest/Pytest+GitLab+Jenkins》第1章簡要介紹自動化測試的相關概念和思路、Selenium的特點和發(fā)展歷史、WebDriver的原理,以及Selenium IDE的簡單應用。第2章和第3章介紹與Python相關的基礎知識,為后續(xù)內(nèi)容的講解做準備。第4章~第15章詳細介紹使用各種框架進行自動化測試的方法和實戰(zhàn)案例,幫助讀者進一步掌握自動化測試技能。第16章從實際情況出發(fā),介紹提升自動化測試用例執(zhí)行效率的幾種常見方法,供讀者在實際操作中參考。
本書適合計算機相關專業(yè)的學生、測試行業(yè)的從業(yè)人員和希望提升自動化測試實戰(zhàn)水平的技術人員閱讀。
1.詳細解讀Python與自動化測試基礎知識
2.深入講解自動化測試使用原理及項目實戰(zhàn)
3.解析自動化測試效率提高方案
4.詳細講解官方推薦框架unittest及pytest
5.擴展持續(xù)集成、提升自動化效率等內(nèi)容拓展讀者視野
6.提供圖書中的源代碼及學習資料
Storm(杜子龍),先后就職于華為、聯(lián)想、Aicent、國能信息等公司,擁有十余年的軟件測試從業(yè)經(jīng)驗,對接口測試、UI 自動化測試、性能測試等均有一定積累,曾參與Android OS 系統(tǒng)、醫(yī)療SaaS系統(tǒng)、商旅系統(tǒng)等多個大型項目。
李鯤程,黑龍江人,畢業(yè)于北京郵電大學,軟件工程碩士,F(xiàn)就職于中國信息通信研究院數(shù)據(jù)研究中心大數(shù)據(jù)技術部,高級工程師。長期從事軟件開發(fā)、大數(shù)據(jù)系統(tǒng)運維與數(shù)據(jù)分析等工作。著有《Visual C++ 打印編程技術與工程實踐》等圖書和《基于關鍵詞進行文本分類的研究與應用》等多篇論文。
邊宇明,2011 年參加工作,先后在中國銀行、國能信息等公司從事軟件測試工作,對白盒測試、自動化測試有一定的研發(fā)經(jīng)驗。
第 1章 自動化測試簡介
1.1 什么是自動化測試 2
1.2 Selenium簡介 3
1.2.1 Selenium的特點 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)境準備
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知識儲備
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 類和實例 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章 前端知識儲備
4.1 HTML基礎知識 68
4.1.1 創(chuàng)建HTML文件 68
4.1.2 HTML元素 69
4.1.3 HTML元素屬性 71
4.1.4 復雜元素 71
4.2 CSS相關知識 76
4.2.1 CSS基礎 76
4.2.2 CSS選擇器 77
4.3 JavaScript相關知識 78
4.3.1 JavaScript基礎概念 78
4.3.2 JavaScript HTML DOM 79
4.4 XML相關知識 80
4.4.1 XML簡介 80
4.4.2 XML樹結(jié)構 81
4.4.3 XPath 83
第5章 Selenium 基礎方法
5.1 Selenium常用方法 86
5.1.1 打開、關閉瀏覽器 87
5.1.2 訪問某個網(wǎng)址 87
5.1.3 網(wǎng)頁的前進和后退 88
5.1.4 刷新瀏覽器頁面 89
5.1.5 瀏覽器窗口最大化、最小化和全屏 89
5.1.6 獲取、設置瀏覽器窗口的大小 90
5.1.7 獲取、設置瀏覽器窗口的位置 91
5.1.8 獲取頁面的title 91
5.1.9 獲取當前頁面的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 獲取頁面元素的相關信息 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 鼠標操作實戰(zhàn) 129
5.4.1 鼠標單擊操作 129
5.4.2 內(nèi)置鼠標操作包 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章 常見控件實戰(zhàn)
6.1 搜索框 137
6.2 按鈕 138
6.3 復選框 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 日期時間控件 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.2 WebDriver的特殊操作 188
7.2.1 元素class值包含空格 188
7.2.2 property、attribute、text的區(qū)別 190
7.2.3 定位動態(tài)id 192
7.2.4 操作cookie 193
7.2.5 截圖功能 199
7.2.6 獲取焦點元素 202
7.2.7 顏色驗證 202
7.3 JavaScript的應用 203
7.3.1 操作頁面元素 204
7.3.2 修改頁面元素屬性 204
7.3.3 操作滾動條 205
7.3.4 高亮顯示正在被操作的頁面元素 207
7.3.5 操作span類型元素 208
7.4 瀏覽器定制啟動參數(shù) 209
7.5 AutoIt的應用 213
7.6 重要的異常 217
第8章 Selenium等待機制
8.1 影響元素加載的外部因素 221
8.2 Selenium強制等待 222
8.3 Selenium隱性等待 223
8.4 Selenium顯性等待 226
第9章 線性測試腳本
9.1 Redmine系統(tǒng) 243
9.1.1 下載和安裝 243
9.1.2 常見錯誤 246
9.1.3 Redmine系統(tǒng)的啟動和關閉 247
9.1.4 Redmine簡單使用 249
9.2 線性腳本 251
第 10章 unittest測試框架
10.1 unittest框架結(jié)構 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 測試報告 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 標記機制 298
11.6.1 對測試用例進行分級 298
11.6.2 跳過某些用例 300
11.7 全局設置 301
11.8 測試報告 304
11.8.1 pytest-html測試報告 304
11.8.2 Allure測試報告 307
11.9 Pytest與Selenium 312
11.10 Pytest參數(shù)化 315
第 12章 PO設計模式
12.1 PO方案一 318
12.2 PO方案二 324
12.3 項目變更應對 330
第 13章 測試框架開發(fā)
13.1 測試數(shù)據(jù)分離 336
13.2 測試配置分離 338
13.3 Selenium API封裝 341
13.4 測試報告 346
第 14章 項目實戰(zhàn)
14.1 測試計劃 348
14.2 測試用例 349
14.3 測試腳本 351
14.4 反思:測試數(shù)據(jù) 358
14.4.1 測試數(shù)據(jù)準備 358
14.4.2 冗余數(shù)據(jù)處理 359
第 15章 持續(xù)集成
15.1 Git應用 364
15.1.1 Git安裝 365
15.1.2 Git基本操作 366
15.1.3 GitLab部署 369
15.1.4 Git遠端倉庫 373
15.2 Jenkins應用 374
15.2.1 Jenkins部署 375
15.2.2 管理插件 378
15.2.3 創(chuàng)建任務 379
15.2.4 命令行啟動Jenkins 381
15.2.5 設置項目執(zhí)行頻率 383
15.2.6 配置郵件 384
15.2.7 配置釘釘 386
15.3 自動化測試持續(xù)集成 389
第 16章 提升效率
16.1 立足根本 394
16.2 另辟蹊徑 395
16.2.1 無頭瀏覽器 395
16.2.2 不關閉瀏覽器 396
16.3 著眼未來 397
16.3.1 分布式執(zhí)行 398
16.3.2 Docker技術 402