WebDriver是一個瀏覽器遠程控制協議,是一個既定標準,它自己的內容很是豐富,本文不可能所有介紹,本文僅粗略帶你們瞭解一下WebDriver的部份內容以及一個小的實際應用。想深刻了解的請參考W3C文檔WebDriver.javascript
開發的同窗都知道公司爲了便於開發和測試都會有多套環境,好比dev開發環境、qa測試聯調環境、pre預發模擬線上環境、online線上環境。常常切環境也是一個比較繁瑣的事情,簡單來講,做爲一個前端開發,頻率最高的操做路徑是:html
1.經過SwitchHosts切換host前端
2.選擇目錄和網關(因爲環境不夠用,可是又須要部署多套代碼。爲了解決這個問題,咱們利用nginx來在一臺機器上配置多個目錄,每一個目錄對應不一樣的代碼,當你訪問這個頁面的時候,網關會記住你所選擇的目錄,進而對你的請求進行相應的轉發)java
3.登陸網頁進行ui調試和接口聯調node
SwitchHosts切換host還算方便,可是選擇目錄、選擇網關、打開網頁輸入用戶名密碼而後點登陸,這個過程操做頻率比較高,有點繁瑣。能不能自動化這個過程呢?熟悉自動化測試的同窗對這個就很是瞭解了,端到端測試就是利用自動化測試套件模擬用戶訪問網頁的過程。這裏我採用selenium-webdriver這個庫,經過node來執行自動化腳本,代碼以下。
nginx
那麼selenium-webdriver究竟是如何與瀏覽器進行交互的?如何與不一樣的瀏覽器進行交互呢?git
下面就要引入主角了—— WebDriver, WebDriver是W3C的一個標準,它是一個標準,因此不一樣的瀏覽器都會有本身的實現,而selenium-webdriver是經過WebDriver協議與瀏覽器進行交互的。github
WebDriver是W3C的一個標準,是一個遠程控制協議,它提供了跨平臺和跨語言的方式來遠程操控瀏覽器,它提供了一系列接口來訪問和操做DOM,進而控制瀏覽器的行爲。它使得web開發者能寫一些自動化腳原本測試網頁。web
(主要參考:https://blog.csdn.net/ant_ren...)
瀏覽器在啓動後會在某一個端口啓動基於WebDriver協議的Web Service,接下來咱們調用WebDriver的任何api時,都須要藉助一個ComandExecutor發送一個命令(也就是給監聽端口上的Web Service發送一個http請求),這個命令會告訴瀏覽器接下來要作什麼。npm
這是一個瀏覽器自動化庫,它提供了許多瀏覽器自動化接口,用於測試web應用。
除了經過npm安裝selenium-webdriver以外,還須要安裝瀏覽器相應的驅動。
它相應的api和用法selenium-webdriver
在咱們new一個WebDriver的過程當中,selenium首先會確認瀏覽器的native component是否存在可用並且匹配的版本,而後就在目標瀏覽器裏啓動一整套Web Service,這套Web Service使用了selenium本身設計定義的協議,名字叫作The WebDriver Wire Protocol。這套協議很是之強大,幾乎能夠操做瀏覽器作任何事情,包括打開、關閉、最大化、最小化、元素定位、元素點擊、上傳文件等等。
https://www.cnblogs.com/linbo...
https://cloud.tencent.com/dev...
http://www.cnblogs.com/sunada...