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