Python實(shí)現(xiàn)Web UI自動(dòng)化測(cè)試實(shí)戰(zhàn):Selenium 3 4+unittest Pyte
《Python實(shí)現(xiàn)Web UI自動(dòng)化測(cè)試實(shí)戰(zhàn):Selenium 3/4+unittest/Pytest+GitLab+Jenkins》主要介紹如何基于Python使用Selenium、unittest、Pytest、GitLab、Jenkins等工具實(shí)現(xiàn)Web UI自動(dòng)化測(cè)試,以幫助讀者提升測(cè)試水平!禤ython實(shí)現(xiàn)Web UI自動(dòng)化測(cè)試實(shí)戰(zhàn):Selenium 3/4+unittest/Pytest+GitLab+Jenkins》第1章簡(jiǎn)要介紹自動(dòng)化測(cè)試的相關(guān)概念和思路、Selenium的特點(diǎn)和發(fā)展歷史、WebDriver的原理,以及Selenium IDE的簡(jiǎn)單應(yīng)用。第2章和第3章介紹與Python相關(guān)的基礎(chǔ)知識(shí),為后續(xù)內(nèi)容的講解做準(zhǔn)備。第4章~第15章詳細(xì)介紹使用各種框架進(jìn)行自動(dòng)化測(cè)試的方法和實(shí)戰(zhàn)案例,幫助讀者進(jìn)一步掌握自動(dòng)化測(cè)試技能。第16章從實(shí)際情況出發(fā),介紹提升自動(dòng)化測(cè)試用例執(zhí)行效率的幾種常見方法,供讀者在實(shí)際操作中參考。
本書適合計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生、測(cè)試行業(yè)的從業(yè)人員和希望提升自動(dòng)化測(cè)試實(shí)戰(zhàn)水平的技術(shù)人員閱讀。
1.詳細(xì)解讀Python與自動(dòng)化測(cè)試基礎(chǔ)知識(shí)
2.深入講解自動(dòng)化測(cè)試使用原理及項(xiàng)目實(shí)戰(zhàn)
3.解析自動(dòng)化測(cè)試效率提高方案
4.詳細(xì)講解官方推薦框架unittest及pytest
5.擴(kuò)展持續(xù)集成、提升自動(dòng)化效率等內(nèi)容拓展讀者視野
6.提供圖書中的源代碼及學(xué)習(xí)資料
Storm(杜子龍),先后就職于華為、聯(lián)想、Aicent、國能信息等公司,擁有十余年的軟件測(cè)試從業(yè)經(jīng)驗(yàn),對(duì)接口測(cè)試、UI 自動(dòng)化測(cè)試、性能測(cè)試等均有一定積累,曾參與Android OS 系統(tǒng)、醫(yī)療SaaS系統(tǒng)、商旅系統(tǒng)等多個(gè)大型項(xiàng)目。
李鯤程,黑龍江人,畢業(yè)于北京郵電大學(xué),軟件工程碩士,F(xiàn)就職于中國信息通信研究院數(shù)據(jù)研究中心大數(shù)據(jù)技術(shù)部,高級(jí)工程師。長(zhǎng)期從事軟件開發(fā)、大數(shù)據(jù)系統(tǒng)運(yùn)維與數(shù)據(jù)分析等工作。著有《Visual C++ 打印編程技術(shù)與工程實(shí)踐》等圖書和《基于關(guān)鍵詞進(jìn)行文本分類的研究與應(yīng)用》等多篇論文。
邊宇明,2011 年參加工作,先后在中國銀行、國能信息等公司從事軟件測(cè)試工作,對(duì)白盒測(cè)試、自動(dòng)化測(cè)試有一定的研發(fā)經(jīng)驗(yàn)。
第 1章 自動(dòng)化測(cè)試簡(jiǎn)介
1.1 什么是自動(dòng)化測(cè)試 2
1.2 Selenium簡(jiǎn)介 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章 測(cè)試環(huán)境準(zhǔn)備
2.1 Windows操作系統(tǒng)測(cè)試環(huán)境搭建 13
2.1.1 Python 13
2.1.2 Selenium 16
2.1.3 PyCharm 18
2.2 macOS操作系統(tǒng)測(cè)試環(huán)境搭建 23
2.3 開發(fā)者工具簡(jiǎn)介 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簡(jiǎn)介 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的相對(duì)定位器 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章 線性測(cè)試腳本
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簡(jiǎn)單使用 249
9.2 線性腳本 251
第 10章 unittest測(cè)試框架
10.1 unittest框架結(jié)構(gòu) 256
10.2 測(cè)試固件 258
10.3 編寫測(cè)試用例 260
10.4 執(zhí)行測(cè)試用例 260
10.5 用例執(zhí)行次序 263
10.6 內(nèi)置裝飾器 266
10.7 命令行執(zhí)行測(cè)試 268
10.8 批量執(zhí)行測(cè)試文件 270
10.9 測(cè)試斷言 272
10.10 測(cè)試報(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測(cè)試框架
11.1 Pytest框架簡(jiǎn)介 284
11.2 Pytest測(cè)試固件 286
11.3 Pytest測(cè)試用例和斷言 290
11.4 Pytest框架測(cè)試執(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 對(duì)測(cè)試用例進(jìn)行分級(jí) 298
11.6.2 跳過某些用例 300
11.7 全局設(shè)置 301
11.8 測(cè)試報(bào)告 304
11.8.1 pytest-html測(cè)試報(bào)告 304
11.8.2 Allure測(cè)試報(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)對(duì) 330
第 13章 測(cè)試框架開發(fā)
13.1 測(cè)試數(shù)據(jù)分離 336
13.2 測(cè)試配置分離 338
13.3 Selenium API封裝 341
13.4 測(cè)試報(bào)告 346
第 14章 項(xiàng)目實(shí)戰(zhàn)
14.1 測(cè)試計(jì)劃 348
14.2 測(cè)試用例 349
14.3 測(cè)試腳本 351
14.4 反思:測(cè)試數(shù)據(jù) 358
14.4.1 測(cè)試數(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)化測(cè)試持續(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