Selenium自動化測試完全指南 基于Python
本書共有19章。第1~10章介紹Selenium IDE、Selenium WebDriver、Selenium Grid、Appium等工具的應(yīng)用。第11~16章介紹自動化測試實戰(zhàn)的組織及模式優(yōu)化,包括如何通過Selenium進(jìn)行功能測試和非功能測試,如何完善功能測試驅(qū)動,如何設(shè)置功能測試的邏輯組織結(jié)構(gòu),如何優(yōu)化功能測試的物理組織結(jié)構(gòu),如何增強(qiáng)功能測試的運(yùn)行反饋機(jī)制。第17~19章講述自動化實戰(zhàn)的落實及實踐優(yōu)化。
本書適合測試人員和開發(fā)人員閱讀。
1.基于Selenium 3 和 Selenium 4 Beta版本,系統(tǒng)講述如何通過Selenium WebDriver、Selenium Grid、Appium等測試工具,組織測試,優(yōu)化測試的模式,進(jìn)而成功進(jìn)行自動化測試
2.在Web功能測試領(lǐng)域,Selenium是非常強(qiáng)大的工具。本書不僅會詳述Selenium系列工具的功能,還將探討自動測試的核心問題,講述如何更好地在實際項目中實施自動化測試,如何真正讓自動化測試取得成效。
本書主要內(nèi)容:
·Selenium IDE的用法;
·Selenium WebDriver的用法;
·Selenium Grid的用法;
·Appium的用法;
·實現(xiàn)和優(yōu)化性能測試的方法;
·實現(xiàn)和優(yōu)化功能能測試的方法;
·使用Jenkins進(jìn)行持續(xù)集成的方法;
·選擇自動化測試實施方式的思路。
趙卓,新蛋科技有限公司電子商務(wù)研發(fā)團(tuán)隊項目經(jīng)理,從事過多年測試工作和開發(fā)工作,精通各類開發(fā)和測試技術(shù)。編寫過的圖書有《Kubernetes從入門到實踐》《Selenium自動化測試指南》,翻譯過的圖書有《精通Selenium WebDriver 3.0 (第2版)》《Visual Studio 2010軟件測試指南》和《快速編碼:高效使用Microsoft Visual Studio》。
目 錄
第 一部分 Selenium工具組
第 1章 Selenium自動化測試概覽 3
1.1 自動化測試簡介 3
1.2 Selenium簡介 5
1.3 Selenium 4與Selenium 3的異同 6
1.4 Selenium工具集 7
1.4.1 Selenium IDE 7
1.4.2 Selenium WebDriver 8
1.4.3 Selenium Grid 8
1.4.4 Appium 8
第 2章 Selenium IDE的基本運(yùn)用 10
2.1 Selenium IDE的安裝 10
2.2 Selenium IDE的基本操作 12
2.2.1 錄制與回放 13
2.2.2 保存回放文件 17
2.2.3 添加測試驗證 18
2.2.4 導(dǎo)出測試腳本 20
2.2.5 其他運(yùn)用 21
第3章 Selenium IDE的高級運(yùn)用 23
3.1 Selenium IDE支持的5類命令 23
3.1.1 界面操作類命令 23
3.1.2 測試驗證類命令 26
3.1.3 執(zhí)行等待類命令 27
3.1.4 流程控制類命令 28
3.1.5 測試輔助類命令 29
3.2 測試套件管理 31
3.3 命令行運(yùn)行器 33
3.3.1 安裝并運(yùn)行各個瀏覽器 34
3.3.2 常用參數(shù)設(shè)置 35
第4章 Selenium WebDriver的基本運(yùn)用 38
4.1 Selenium WebDriver的安裝與配置 38
4.1.1 配置驅(qū)動程序 38
4.1.2 配置環(huán)境變量 42
4.1.3 安裝綁定語言 42
4.2 選擇瀏覽器開始測試 43
4.3 瀏覽器窗口的基本操作 44
4.3.1 瀏覽器導(dǎo)航操作 44
4.3.2 瀏覽器窗口操作 45
4.3.3 獲取瀏覽器信息 45
4.4 查找頁面元素 47
4.4.1 按id屬性查找 47
4.4.2 按name屬性查找 48
4.4.3 按class屬性查找 48
4.4.4 按鏈接文本查找 48
4.4.5 按鏈接文本進(jìn)行模糊查找 50
4.4.6 按標(biāo)簽類型查找 50
4.4.7 按XPath查找 50
4.4.8 按CSS選擇器查找 53
4.4.9 通過By對象按動態(tài)條件查找 55
4.4.10 查找元素集合 56
4.4.11 嵌套查找 57
4.5 頁面元素的基本操作 57
4.5.1 單擊元素 57
4.5.2 向元素輸入內(nèi)容或上傳附件 59
4.5.3 清空元素的內(nèi)容 60
4.5.4 提交表單元素 60
4.5.5 下拉框元素的選項操作 61
4.6 獲取頁面元素的內(nèi)容 63
4.6.1 獲取元素的基本屬性 63
4.6.2 獲取元素的HTML屬性、
DOM屬性及CSS屬性 65
4.6.3 獲取元素的位置與大小 69
4.6.4 獲取下拉框元素的選項 70
4.7 處理瀏覽器彈出框 71
4.7.1 彈出框的確認(rèn)與取消 73
4.7.2 獲取彈出框的文本 73
4.7.3 向彈出框中輸入內(nèi)容 74
4.8 多網(wǎng)頁切換操作 75
4.8.1 多瀏覽器窗口的切換 75
4.8.2 IFrame切換 77
4.9 結(jié)束WebDriver會話 78
第5章 Selenium WebDriver的高級運(yùn)用 79
5.1 深入了解Selenium的等待機(jī)制 79
5.1.1 頁面級等待機(jī)制 79
5.1.2 元素級等待機(jī)制—強(qiáng)制等待 80
5.1.3 元素級等待機(jī)制—隱式等待 81
5.1.4 元素級等待機(jī)制—顯式等待 82
5.1.5 腳本級等待機(jī)制 87
5.2 對鍵盤和鼠標(biāo)進(jìn)行精準(zhǔn)模擬 87
5.2.1 ActionChains——操作鏈 87
5.2.2 ActionChains支持的全部
鼠標(biāo)與鍵盤操作設(shè)置 89
5.2.3 模擬復(fù)雜鼠標(biāo)操作
案例——拖放操作 91
5.2.4 模擬復(fù)雜鍵盤操作
案例——組合鍵 93
5.3 操作瀏覽器Cookie 95
5.3.1 讀取Cookie 95
5.3.2 新增和刪除Cookie 96
5.4 對瀏覽器窗口或元素截圖 97
5.4.1 對瀏覽器窗口截圖 97
5.4.2 對元素截圖 98
5.5 為Selenium操作附加自定義事件 99
5.5.1 附加WebDriver級自定義事件 99
5.5.2 附加元素級自定義事件 102
5.6 瀏覽器啟動參數(shù)設(shè)置 103
5.6.1 WebDriver實例化參數(shù) 103
5.6.2 WebDriver啟動選項設(shè)置 106
5.7 通過JavaScript執(zhí)行器進(jìn)行深度
操作 108
5.7.1 執(zhí)行同步腳本——返回值與
類型轉(zhuǎn)換 109
5.7.2 執(zhí)行同步腳本——傳入?yún)?shù) 110
5.7.3 執(zhí)行同步腳本——復(fù)雜案例:
引入JavaScript庫處理HTML5
拖曳 111
5.7.4 執(zhí)行異步腳本 114
第6章 Selenium Grid的基本運(yùn)用 117
6.1 Selenium Grid各組件的部署 118
6.1.1 部署Selenium Grid Hub 119
6.1.2 部署Selenium Grid Node 120
6.2 在Selenium Grid上運(yùn)行測試 122
6.2.1 創(chuàng)建遠(yuǎn)程實例運(yùn)行測試 122
6.2.2 遠(yuǎn)程實例管理 124
6.2.3 獨(dú)立模式 125
第7章 Selenium Grid的高級運(yùn)用 126
7.1 Selenium Grid詳細(xì)參數(shù)設(shè)置 126
7.1.1 Hub與Node的功能參數(shù)設(shè)置 128
7.1.2 WebDriver瀏覽器參數(shù)設(shè)置 131
7.2 使用Selenium Grid進(jìn)行分布式
并行測試 134
7.3 容器化Selenium—整合Docker 135
7.3.1 Docker簡介 135
7.3.2 安裝Docker并拉取Selenium
鏡像 137
7.3.3 在同一臺機(jī)器上部署
Selenium Grid鏡像 139
7.3.4 在多臺機(jī)器上部署
Selenium Grid組成集群 142
7.4 容器化Selenium—整合
Kubernetes 143
7.4.1 Kubernetes簡介 144
7.4.2 Kubernetes的安裝與配置 145
7.4.3 Kubernetes的關(guān)鍵概念——
Pod、Deployment、Service 146
7.4.4 在Kubernetes集群中部署
Selenium Grid 148
第8章 Selenium 4的新特性預(yù)覽 152
8.1 Selenium WebDriver 4 152
8.1.1 下載WebDriver 152
8.1.2 相對定位器 153
8.1.3 顯式等待組合邏輯 155
8.1.4 其他更新 156
8.2 Selenium Grid 4 158
8.2.1 下載與啟動 158
8.2.2 運(yùn)行測試 160
第9章 Appium的基本運(yùn)用 162
9.1 Appium運(yùn)行原理簡介 162
9.2 Appium的安裝與配置 164
9.2.1 安裝Android SDK 164
9.2.2 安裝Appium服務(wù)器 170
9.2.3 安裝Appium客戶端 171
9.3 使用Appium測試Web程序 172
9.3.1 設(shè)置瀏覽器驅(qū)動程序 172
9.3.2 編寫代碼操作Web應(yīng)用程序 174
9.3.3 通過Appium工具查看元素
信息 175
9.3.4 其他替代方案 177
9.4 使用Appium測試App 178
9.4.1 連接真實的移動設(shè)備 179
9.4.2 解析啟動屬性appPackage
和appActivity 179
9.4.3 查看并定位界面元素 182
9.4.4 編寫操作代碼——微信登錄
案例 184
第 10章 Appium的高級運(yùn)用 186
10.1 Appium檢測工具的具體功能 186
10.2 移動設(shè)備元素獨(dú)有的定位 195
10.3 移動設(shè)備界面獨(dú)有的操作 198
10.3.1 滑動操作與多點觸控 198
10.3.2 觸控操作鏈 201
10.3.3 剪貼板與虛擬鍵盤操作 204
10.4 移動設(shè)備App獨(dú)有的操作 205
10.4.1 App的安裝、卸載、啟用、
關(guān)閉與隱藏 205
10.4.2 操作及獲取當(dāng)前的appPackage
和appActivity 208
10.5 移動設(shè)備系統(tǒng)獨(dú)有操作 209
10.5.1 網(wǎng)絡(luò)信號與通話 209
10.5.2 設(shè)備與電源管理 210
10.5.3 模擬GPS定位 211
10.6 測試輔助操作 212
10.6.1 屏幕錄制 212
10.6.2 獲取App性能消耗信息
及上下文信息 212
10.7 并行運(yùn)行多個移動設(shè)備 214
10.8 將Appium加入Selenium Grid
集群 215
第二部分 自動化測試實戰(zhàn):
組織及模式優(yōu)化
第 11章 使用Selenium進(jìn)行功能測試 221
11.1 完善測試的基本要素 222
11.2 結(jié)合Pytest進(jìn)行功能測試 224
11.2.1 Pytest的安裝與簡介 225
11.2.2 基于Pytest編寫Selenium
測試 226
11.2.3 選擇合適的執(zhí)行方式 227
第 12章 完善功能測試驅(qū)動以規(guī)范測試 230
12.1 引言 230
12.2 線性測試 233
12.3 模塊化與庫 234
12.4 數(shù)據(jù)驅(qū)動 235
12.5 關(guān)鍵字驅(qū)動 235
12.6 使用驅(qū)動時的誤區(qū) 236
12.6.1 數(shù)據(jù)驅(qū)動的誤區(qū) 236
12.6.2 關(guān)鍵字驅(qū)動的誤區(qū) 237
12.7 最佳模式:混合驅(qū)動 238
12.7.1 混合第 一層驅(qū)動 238
12.7.2 混合第二層驅(qū)動 240
12.8 創(chuàng)建配置文件以應(yīng)對不同環(huán)境 242
12.8.1 讓公共信息支持多環(huán)境配置 242
12.8.2 讓用例數(shù)據(jù)支持多環(huán)境
配置 243
第 13章 設(shè)計功能測試的邏輯組織結(jié)構(gòu) 245
13.1 測試的前置操作與后置操作 245
13.1.1 Pytest setup與teardown功能
詳解 245
13.1.2 前后置操作實際運(yùn)用案例 247
13.2 設(shè)定測試函數(shù)的先后順序 250
13.2.1 文件級執(zhí)行順序 250
13.2.2 函數(shù)級執(zhí)行順序 251
13.2.3 自定義順序 251
13.3 測試粒度規(guī)劃 252
13.3.1 小粒度的測試 252
13.3.2 中粒度的測試 253
13.3.3 大粒度的測試 254
第 14章 優(yōu)化功能測試的物理組織結(jié)構(gòu) 256
14.1 引言 256
14.2 通過頁面對象規(guī)劃待操作元素 261
14.3 通過繼承關(guān)系組織公共元素 265
14.4 進(jìn)一步解耦測試用例與操作
動作 268
14.4.1 解耦測試工具級操作 269
14.4.2 解耦頁面元素級操作 274
14.5 通過流式編程技術(shù)簡化測試代碼 279
第 15章 增強(qiáng)功能測試的運(yùn)行反饋機(jī)制 283
15.1 生成測試報告 283
15.2 并行運(yùn)行測試 285
15.3 引入重試機(jī)制 286
第 16章 使用Selenium進(jìn)行非功能
測試 287
16.1 網(wǎng)絡(luò)爬蟲 287
16.1.1 爬蟲簡介 287
16.1.2 使用Selenium實現(xiàn)爬蟲 288
16.2 性能測試 291
16.2.1 多線程性能測試 291
16.2.2 結(jié)合JMeter進(jìn)行測試 293
第三部分 自動化測試實戰(zhàn):
落實及實踐優(yōu)化
第 17章 自動化測試的規(guī)劃 301
17.1 目標(biāo)決定自動化測試的成敗 301
17.1.1 必定走向失敗的目標(biāo) 301
17.1.2 能夠引領(lǐng)成功的目標(biāo) 304
17.2 測試設(shè)計決定自動化測試的成效 304
17.2.1 無效的測試設(shè)計 305
17.2.2 有效的測試設(shè)計 306
第 18章 使用Jenkins進(jìn)行持續(xù)集成 308
18.1 必要概念與工具簡介 308
18.1.1 持續(xù)集成與Jenkins簡介 308
18.1.2 Jenkins的安裝與配置 310
18.2 配置基于網(wǎng)站代碼變化而自動
執(zhí)行的Selenium腳本 315
18.2.1 編寫一個基于Flask的網(wǎng)站 316
18.2.2 編寫該網(wǎng)站的自動部署腳本 317
18.2.3 編寫測試該網(wǎng)站的Selenium
測試腳本 319
18.2.4 在Jenkins中配置自動構(gòu)建、
部署與執(zhí)行測試 320
18.3 配置基于時間定期自動執(zhí)行的
Selenium腳本 326
18.4 完善運(yùn)行反饋配置 328
18.4.1 配置測試報告 328
18.4.2 配置郵件發(fā)送 329
第 19章 選擇自動化測試的實施方式 334
19.1 不同產(chǎn)品架構(gòu)與開發(fā)流程下的
自動化測試 334
19.2 以正確的數(shù)據(jù)說話——建立自動化
測試評估體系 336
19.3 打造自動化測試閉環(huán) 338