精通 Selenium WebDriver 3.0 (第2版)
內容描述
本書通過大量測試代碼、界面截圖和操作步驟,介紹瞭如何使用Selenium WebDriver 3.0實現Web自動化測試。主要內容包括如何構建測試框架、如何處理失敗的測試、Selenium生成的各種異常的含義、自動化測試失敗的原因、頁面對象的使用方法、高級用戶交互API的使用方法、JavascriptExecutor類的使用方法、Selenium的缺點、如何在Selenium中使用Docker等。
本書有助於讀者快速掌握並在實際工作中使用Selenium WebDriver 3.0,適合測試人員、開發人員以及相關專業人士閱讀。
目錄大綱
第1章如何加快測試速度\t1
1.1使開發人員易於運行測試2
1.2使用Apache Maven構建測試項目2
1.3並行執行測試8
1.4使用TestNG進行並行測試11
1.5不存在銀彈21
1.6多瀏覽器支持22
1.7自動下載WebDriver二進製文件30
1.8後台模式38
1.9總結43
第2章如何正確處理失敗的測試44
2.1測試代碼的位置44
2.2測試是一種實時文檔45
2.3測試的可靠性47
2.3.1孤立的自動化團隊47
2.3.2時好時壞的測試48
2.4增強測試的可靠性49
2.4.1 Git 50
2.4.2 Subversion 51
2.5關鍵在於持續集成52
2.5.1設置TeamCity 55
2.5.2設置Jenkins 61
2.6使用Selenium -Grid擴展功能68
2.7一圖勝過千言萬語73
2.8別畏懼龐大的錯誤棧追踪信息79
2.9總結83
第3章必知的異常84
3.1 NoSuchElementException異常84
3.2 NoSuchFrameException異常86
3.3 NoSuchWindowException異常86
3.4 ElementNotVisibleException異常87
3.5 StaleElementReferenceException異常87
3.6 InvalidElementStateException異常90
3.7 UnsupportedCommandException異常90
3.8 UnreachableBrowserException異常91
3.9 SessionNotFoundException異常93
3.10 WebDriverException異常—元素此時不可單擊93
3.11 NoAlertPresentException異常94
3.12總結94
第4章等待的藝術95
4.1頁面真的準備好了嗎95
4.2影響頁面加載的外部因素96
4.2.1計算機規格因素96
4.2.2服務器規格因素96
4.2.3 JavaScript引擎性能因素97
4.2.4網絡因素97
4.3解決問題的思路97
4.4 Selenium內置的等待機制98
4.4 .1頁面加載超時機制99
4.4.2腳本超時機制99
4.4.3隱式等待超時機制100
4.5使用顯式等待104
4.6顯式等待的核心——流式等待106
4.6.1函數108
4.6.2 Java 8 Lambda表達式111
4.7總結112
第5章使用高效的頁面對象113
5.1為何不斷做重複的事情113
5.2一切始於頁面對象121
5.3頁面對象關注點的分離123
5.4 Java PageFactory類簡介125
5.4.1使用PageFactory註釋125
5.4. 2初始化代理對象127
5.4.3 PageFactory類存在的問題129
5.5 Query對像簡介130
5.6選擇PageFactory類還是Query對象133
5.7創建可擴展的頁面對象133
5.8將頁面對象轉換為易讀的DSL 137
5.9流式頁面對象140
5.10總結144
第6章使用高級用戶交互API 145
6.1 API簡介146
6.2使用API解決困難問題147
6.2.1使用懸停菜單147
6.2.2使用拖放操作151
6.2.3使用偏移量155
6.2 .4使用快捷訪問鍵162
6.2.5高級交互API並非絕對有效170
6.3總結171
第7章使用Selenium執行JavaScript代碼172
7.1 JavaScript執行器簡介172
7.2 JavaScript執行器的誤用與濫用175
7.3 JavaScript執行器的正確用法176
7.4更複雜的案例177
7.5 JavaScript庫的導入方式184
7.6 JavaScript庫的導入原則186
7.7如何執行異步腳本186
7.8自動實現用戶交互188
7.9總結191
第8章實事求是192
8.1使用Selenium下載文件192
8.1.1使用場景192
8.1.2面臨的問題193
8.1.3下一步的行動193
8.1.4真需要下載文件嗎194
8.1.5檢查鏈接是否有效194
8.1.6下載文件的辦法202
8.1.7使用Selenium協助下載文件204
8.2通過Selenium無法跟踪網絡流量211
8.3跟踪網絡流量的辦法212
8.4使用Selenium編寫性能測試222
8.5使用Selenium進行滲透測試225
8.6總結228
第9章將Docker整合到Selenium中229
9.1 Docker簡介229
9.2通過Docker啟動Selenium-Grid 232
9.3在新的Selenium-Grid上運行測試237
9.4將Docker容器的啟動作為構建的一部分238
9.5使用Docker Maven插件242
9.6使用Docker Compose 245
9.7 Docker的不足之處247
9.8總結247
第10章展望Selenium的未來249
10.1機器學習—全新的追求249
10.2視覺驗證251
10.2.1 Applitools Eyes 253
10.2.2引入人工智能260
10.3自我修復測試262
10.4自動編寫測試264
10.5總結264
附錄A如何進一步完善Selenium 265
附錄B使用JUnit 280
附錄C Appium簡介288
作者介紹
Mark Collin是一名專業的軟件測試人員,自2001年以來一直從事軟件測試工作,精通自動化測試、安全測試、滲透測試和性能測試。曾負責多家大型公司的眾多測試項目。他是driver-binary-downloader-maven-plugin工具的創建者和維護者,還是jmeter-maven-plugin工具的核心貢獻者。他還為核心Selenium代碼庫貢獻了大量代碼。