Python 實現 Web UI 自動化測試實戰:Selenium 3/4 + unittest/Pytest + GitLab + Jenkins

Storm 李鯤程 邊宇明

  • Python 實現 Web UI 自動化測試實戰:Selenium 3/4 + unittest/Pytest + GitLab + Jenkins-preview-1
  • Python 實現 Web UI 自動化測試實戰:Selenium 3/4 + unittest/Pytest + GitLab + Jenkins-preview-2
Python 實現 Web UI 自動化測試實戰:Selenium 3/4 + unittest/Pytest + GitLab + Jenkins-preview-1

買這商品的人也買了...

商品描述

《Python實現Web UI自動化測試實戰:Selenium 3/4+unittest/Pytest+GitLab+Jenkins》主要介紹如何基於Python使用Selenium、unittest、Pytest、GitLab、Jenkins等工具實現Web UI自動化測試,以幫助讀者提升測試水平。《Python實現Web UI自動化測試實戰:Selenium 3/4+unittest/Pytest+GitLab+Jenkins》第1章簡要介紹自動化測試的相關概念和思路、Selenium的特點和發展歷史、WebDriver的原理,以及Selenium IDE的簡單應用。第2章和第3章介紹與Python相關的基礎知識,為後續內容的講解做準備。第4章~第15章詳細介紹使用各種框架進行自動化測試的方法和實戰案例,幫助讀者進一步掌握自動化測試技能。第16章從實際情況出發,介紹提升自動化測試用例執行效率的幾種常見方法,供讀者在實際操作中參考。

本書適合電腦相關專業的學生、測試行業的從業人員和希望提升自動化測試實戰水平的技術人員閱讀。

作者簡介

Storm(杜子龍),先後就職於華為、聯想、Aicent、國能信息等公司,擁有十餘年的軟件測試從業經驗,對接口測試、UI 自動化測試、性能測試等均有一定積累,曾參與Android OS 系統、醫療SaaS系統、商旅系統等多個大型項目。


李鯤程,黑龍江人,畢業於北京郵電大學,軟件工程碩士。
現就職於中國信息通信研究院數據研究中心大數據技術部,高級工程師。長期從事軟件開發、大數據系統運維與數據分析等工作。著有《Visual C++ 打印編程技術與工程實踐》等圖書和《基於關鍵詞進行文本分類的研究與應用》等多篇論文。


邊宇明,2011 年參加工作,先後在中國銀行、國能信息等公司從事軟件測試工作,對白盒測試、自動化測試有一定的研發經驗。

目錄大綱

第 1章 自動化測試簡介
1.1 什麼是自動化測試 2
1.2 Selenium簡介 3
1.2.1 Selenium的特點 3
1.2.2 Selenium發展歷史 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章 測試環境準備
2.1 Windows操作系統測試環境搭建 13
2.1.1 Python 13
2.1.2 Selenium 16
2.1.3 PyCharm 18
2.2 macOS操作系統測試環境搭建 23
2.3 開發者工具簡介 24
2.3.1 Chrome DevTools 24
2.3.2 Firefox DevTools 25

第3章 Python知識儲備
3.1 Python基本數據類型 27
3.1.1 數值 27
3.1.2 字符串 28
3.1.3 列表 29
3.1.4 元組 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.3 Python函數、模塊 35
3.3.1 創建函數 36
3.3.2 函數參數 36
3.3.3 Python模塊 44
3.4 面向對象編程 44
3.4.1 類和實例 46
3.4.2 繼承和多態 49
3.5 Python中的os模塊 51
3.6 Python中的time模塊 53
3.7 文件讀寫 55
3.7.1 Python中的open函數 56
3.7.2 JSON文件 58
3.7.3 YAML文件 63
3.7.4 CSV文件 65

第4章 前端知識儲備
4.1 HTML基礎知識 68
4.1.1 創建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樹結構 81
4.4.3 XPath 83

第5章 Selenium 基礎方法
5.1 Selenium常用方法 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 獲取頁面的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 瀏覽器方法和屬性總結 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 判斷元素的選中狀態 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.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的區別 190
7.2.3 定位動態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 瀏覽器定制啟動參數 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系統 243
9.1.1 下載和安裝 243
9.1.2 常見錯誤 246
9.1.3 Redmine系統的啟動和關閉 247
9.1.4 Redmine簡單使用 249
9.2 線性腳本 251

第 10章 unittest測試框架
10.1 unittest框架結構 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.11 unittest與Selenium 276
10.12 unittest參數化 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框架測試執行 292
11.4.1 使用main函數執行 292
11.4.2 在命令行窗口中執行 294
11.5 Pytest框架用例執行失敗重試 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參數化 315

第 12章 PO設計模式
12.1 PO方案一 318
12.2 PO方案二 324
12.3 項目變更應對 330

第 13章 測試框架開發
13.1 測試數據分離 336
13.2 測試配置分離 338
13.3 Selenium API封裝 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.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 創建任務 379
15.2.4 命令行啟動Jenkins 381
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.2 Docker技術 402