.演唱會的門票,蘋果的手機,網上搶購秒殺怎麼做
.自動登入愛情公寓,選擇年齡居住地,開始幫你狂發信
.進入證交所網站,自動下載所有交易資料
上面的功能如果是你想的,學習Selenium是你唯一的選擇
只要一點點程式基礎,再加上一點點細心
你將成為網路爬蟲大師!
本書並不只是告訴讀者如何使用一個自動化測試工具,而是希望讀者學習本書內容後能夠提高綜合的技術高度與寬度,從而擺脫簡單的手工測試,向高級測試工程師的道路邁進。
本書不僅是介紹Selenium2自動化測試工具,也是實用的Python 程式書。
作者簡介:
蟲師(胡志恒)
魅族科技高級測試工程師。2011年6月開始在博客園上持續分享各種測試技術和經驗,文章多次被51testing等網站轉載,精通性能測試、自動化測試等技術。
推薦序
推薦序
Selenium 一直是網頁開發測試產業界的明星,從WebDriver 時代就獲得不少人的青睞,但是在Selenium 真正併購Webdriver 後,這個產品才算真正完整,再加上瀏覽器端的IDE 等完美結合,讓網路應用程式的測試之路好走不少。
在Stackoverflow 上看到大家的提問,Selenium 大部分是用Java 實作,但這
三年,用Python 的有越來越多的趨勢,筆者在使用Selenium 的期間,一直
納悶怎麼沒有一本完整的書來介紹這個好料,直到今年電子工業出版社,終於有人完成了。
我接觸Selenium 大約有三年的時間,但主要的用途不是測試,而是爬蟲。
對,就是爬蟲。爬蟲是大數據的資料來源之一,很多大數據的網站或教學,都是以爬蟲開始的。筆者早期使用Ruby 的Nokogiri,也使用了Mechanize,都能滿足大部分的需求了,但在這幾年,網頁程式的功能越來越複雜,Nokogiri或是Mechanize 慢慢已經無法滿足要求了。
首先就是使用原理上的大相逕庭。Nokogiri 或Mechanize, 主要只是把
HTML 下載回客戶端,然後再來分析HTML 中的元件,就先不說Captcha
了,連一個簡單的Ajax Call,當你Refresh 網頁時,整個HTML 的內容都變
了,Nokogiri/Mechanize 在遇到這種情況時,就會有很多問題,更不要說麻
煩的Javascript 或是jQuery 了。
Selenium comes to the rescue!
Selenium 是一個以瀏覽器為基礎的爬蟲軟體( 對,不是測試軟體,是爬蟲)。
換句話說,你必須安裝了瀏覽器,才能執行Selenium。WebDriver 支援的瀏
覽器預設為Firefox,但Chrome 和其它瀏覽器都可以,只要你有安裝該瀏覽
器,並且對應到應有的Driver 即可。
有瀏覽器之後,什麼事就變的簡單了。你可以利用WebDriver 提供的各種方法來和網頁上的任何元件互動。要找元素?沒問題,用findElemendById。
要找Javascript ?沒問題,用XSpath 來找,要按「同意授權」?沒問題,
用.click 或是.submit。要抓螢幕上的截圖?沒問題,用save_screenshot。
Selenium 出現之後,我相信你真的不會想再用Nokogiri 或Mechanize 了( 當然簡單的爬蟲還是可以不用牛刀啦)。
Selenium 更提供了非常強大的Python 函數庫, 你可以自定Exception
Condition,可以使用Wait 來等某一個元件的出現( 這在Javascript 流行的當
今太重要了! ),更可以設定重新刷新頁面,或是等待一下,讓你的操作更符合真人的操作,有了Selenium,不要說灌票了,訂票系統,搶購系統,秒殺系統,對你來說真的輕而易舉,快速搶上n 隻新的iPhone 7 都不會太難了。
本書真的算拋磚引玉,因為很多重要的東西也沒提到。和Selenium 搭配最棒的PhantomJS 就沒提。大家都知道許多hardcore 的宅男,他們的開發環境是完全沒有圖型介面的。有了PhantomJS 不但可以不安裝瀏覽器,Selenium 本身沒提供的可變User Agent Header,就可以靠PhantomJS 完成,筆者在使用了PhantomJS 之後,也不再使用Firefox Driver。當然你也可以用Xvfb 來Export Display 給Firefox 使用,稱之為Headless,但還得安裝一大堆有的沒的dependencies,PhantomJS 太方便了。
筆者在配合了OpenCV 之後, 成功破解許多網站的Captcha 機制, 讓
Selenium 搖身一變成為註冊機器人,配合ipython 可以線上開發機器人,配合numpy 可以算出不同圖型的相似度,Selenium 的好處說不完!
更變態的用法,在搭配了Sikuli( 一個MIT 畢業的台灣人寫的) 之後,真的可以說天下無敵了!連Windows/Mac/Linux 的桌面操作或Terminal 操作都能自動化了!這已經超脫了自動化測試或爬蟲的高度,而朝向電腦Robot 的境界前進,當然這一切,你還是要從熟悉Selenium 開始。
本書作者為中國大陸籍,因此全書使用百度為範例,為保留全書的完整性,圖的部分就保持簡體中文介面,相信這小小的差別,是不會影響本書的可看性的。
我,極力推薦這本書!
胡嘉璽
推薦序
Selenium 一直是網頁開發測試產業界的明星,從WebDriver 時代就獲得不少人的青睞,但是在Selenium 真正併購Webdriver 後,這個產品才算真正完整,再加上瀏覽器端的IDE 等完美結合,讓網路應用程式的測試之路好走不少。
在Stackoverflow 上看到大家的提問,Selenium 大部分是用Java 實作,但這
三年,用Python 的有越來越多的趨勢,筆者在使用Selenium 的期間,一直
納悶怎麼沒有一本完整的書來介紹這個好料,直到今年電子工業出版社,終於有人完成了。
我接觸Selenium 大約有三年的時間,但主要的用途不是測試,而是爬蟲。
對,就是...
目錄
推薦序
前言
01 自動化測試基礎
1.1 軟體測試分類
1.2 分層的自動化測試
1.3 什麼樣的專案適合自動化測試
1.4 自動化測試及工具簡述
1.5 Selenium 工具介紹
1.6 前端技術介紹
1.7 前端工具介紹
1.8 開發語言的選擇
02 測試環境架設
2.1 Windows 下的環境架設
2.2 Ubuntu 下的環境架設
2.3 使用IDLE 撰寫Python
2.4 撰寫第一個自動化指令稿
2.5 安裝瀏覽器驅動
2.6 不同程式語言下使用WebDriver
03 Python 基礎
3.1 Python 哲學
3.2 輸出與輸入
3.3 分支與循環
3.4 陣列與字典
3.5 函數、類別和方法
3.6 模組
3.7 例外
3.8 本章小結
04 WebDriver API
4.1 從定位元素開始
4.2 控制瀏覽器
4.3 簡單元素操作
4.4 滑鼠事件
4.5 鍵盤事件
4.6 獲得驗證資訊
4.7 設定元素等待
4.8 定位一組元素
4.9 多表單切換
4.10 多視窗切換
4.11 警告框處理
4.12 上傳檔案
4.13 下載檔案
4.14 操作Cookie
4.15 呼叫JavaScript
4.16 處理HTML5 的視訊播放
4.17 視窗畫面
4.18 關閉視窗
4.19 驗證碼的處理
4.20 WebDriver 原理
4.21 本章小結
05 自動化測試模型
5.1 自動化測試模型介紹
5.2 模組化驅動測試實例
5.3 資料驅動測試實例
5.4 本章小結
06 Selenium IDE
6.1 Selenium IDE 安裝
6.2 Selenium IDE 介面介紹
6.3 建立測試使用案例
6.4 Selenium IDE 指令
6.5 斷言與驗證
6.6 等待與變數
6.7 本章小結
07 unittest 單元測試架構
7.1 認識unittest
7.2 關於unittest 還需要知道的
7.3 帶unittest 的指令稿分析
7.4 撰寫Web 測試使用案例
7.5 本章小結
08 自動化測試進階應用
8.1 HTML 測試報告
8.2 自動發郵件功能
8.3 Page Object 設計模式
8.4 本章小結
09 Selenium Grid2
9.1 Selenium Server 環境設定
9.2 Selenium Grid 工作原理
9.3 Remote 應用
9.4 WebDriver 驅動
9.5 本章小結
10 Python 多執行緒
10.1 單執行緒的時代
10.2 多執行緒技術
10.3 多處理程序技術
10.4 應用於自動化測試
10.5 本章小結
11 自動化測試專案實戰
11.1 自動化測試使用案例設計
11.2 BBS 社區專案實戰
11.3 本章小結
12 BDD 架構之Lettuce 入門
12.1 什麼是BDD
12.2 安裝Lettuce
12.3 階乘的實例
12.4 Lettuce_webdriver 自動化測試
12.5 本章小結
推薦序
前言
01 自動化測試基礎
1.1 軟體測試分類
1.2 分層的自動化測試
1.3 什麼樣的專案適合自動化測試
1.4 自動化測試及工具簡述
1.5 Selenium 工具介紹
1.6 前端技術介紹
1.7 前端工具介紹
1.8 開發語言的選擇
02 測試環境架設
2.1 Windows 下的環境架設
2.2 Ubuntu 下的環境架設
2.3 使用IDLE 撰寫Python
2.4 撰寫第一個自動化指令稿
2.5 安裝瀏覽器驅動
2.6 不同程式語言下使用WebDriver
03 Python 基礎
3.1 Python 哲學
3.2 輸出與輸入
3.3 分支與循環
3.4 陣列與字典
3.5 函數、類別和方法
3.6 模組
3.7 例外
3.8 本章小結
04...