浏览器自动化操作标准--WebDriver
WebDriver是一個(gè)瀏覽器遠(yuǎn)程控制協(xié)議,是一個(gè)既定標(biāo)準(zhǔn),它本身的內(nèi)容非常豐富,本文不可能全部介紹,本文僅粗略帶大家了解一下WebDriver的部分內(nèi)容以及一個(gè)小的實(shí)際應(yīng)用。想深入了解的請(qǐng)參考W3C文檔WebDriver.
問(wèn)題背景
開發(fā)的同學(xué)都知道公司為了便于開發(fā)和測(cè)試都會(huì)有多套環(huán)境,比如dev開發(fā)環(huán)境、qa測(cè)試聯(lián)調(diào)環(huán)境、pre預(yù)發(fā)模擬線上環(huán)境、online線上環(huán)境。經(jīng)常切環(huán)境也是一個(gè)比較繁瑣的事情,簡(jiǎn)單來(lái)說(shuō),作為一個(gè)前端開發(fā),頻率最高的操作路徑是:
1.通過(guò)SwitchHosts切換host
2.選擇目錄和網(wǎng)關(guān)(由于環(huán)境不夠用,但是又需要部署多套代碼。為了解決這個(gè)問(wèn)題,我們利用nginx來(lái)在一臺(tái)機(jī)器上配置多個(gè)目錄,每個(gè)目錄對(duì)應(yīng)不同的代碼,當(dāng)你訪問(wèn)這個(gè)頁(yè)面的時(shí)候,網(wǎng)關(guān)會(huì)記住你所選擇的目錄,進(jìn)而對(duì)你的請(qǐng)求進(jìn)行相應(yīng)的轉(zhuǎn)發(fā))
3.登錄網(wǎng)頁(yè)進(jìn)行ui調(diào)試和接口聯(lián)調(diào)
SwitchHosts切換host還算方便,但是選擇目錄、選擇網(wǎng)關(guān)、打開網(wǎng)頁(yè)輸入用戶名密碼然后點(diǎn)登錄,這個(gè)過(guò)程操作頻率比較高,有點(diǎn)繁瑣。能不能自動(dòng)化這個(gè)過(guò)程呢?熟悉自動(dòng)化測(cè)試的同學(xué)對(duì)這個(gè)就非常了解了,端到端測(cè)試就是利用自動(dòng)化測(cè)試套件模擬用戶訪問(wèn)網(wǎng)頁(yè)的過(guò)程。這里我采用selenium-webdriver這個(gè)庫(kù),通過(guò)node來(lái)執(zhí)行自動(dòng)化腳本,代碼如下。
那么selenium-webdriver到底是如何與瀏覽器進(jìn)行交互的?如何與不同的瀏覽器進(jìn)行交互呢?
下面就要引入主角了—— WebDriver, WebDriver是W3C的一個(gè)標(biāo)準(zhǔn),它是一個(gè)標(biāo)準(zhǔn),所以不同的瀏覽器都會(huì)有自己的實(shí)現(xiàn),而selenium-webdriver是通過(guò)WebDriver協(xié)議與瀏覽器進(jìn)行交互的。
WebDriver是什么
WebDriver是W3C的一個(gè)標(biāo)準(zhǔn),是一個(gè)遠(yuǎn)程控制協(xié)議,它提供了跨平臺(tái)和跨語(yǔ)言的方式來(lái)遠(yuǎn)程操控瀏覽器,它提供了一系列接口來(lái)訪問(wèn)和操作DOM,進(jìn)而控制瀏覽器的行為。它使得web開發(fā)者能寫一些自動(dòng)化腳本來(lái)測(cè)試網(wǎng)頁(yè)。
WebDriver的工作過(guò)程
(主要參考:https://blog.csdn.net/ant_ren...)
瀏覽器在啟動(dòng)后會(huì)在某一個(gè)端口啟動(dòng)基于WebDriver協(xié)議的Web Service,接下來(lái)我們調(diào)用WebDriver的任何api時(shí),都需要借助一個(gè)ComandExecutor發(fā)送一個(gè)命令(也就是給監(jiān)聽端口上的Web Service發(fā)送一個(gè)http請(qǐng)求),這個(gè)命令會(huì)告訴瀏覽器接下來(lái)要做什么。
WebDriver的實(shí)際應(yīng)用
selenium-webdriver
這是一個(gè)瀏覽器自動(dòng)化庫(kù),它提供了許多瀏覽器自動(dòng)化接口,用于測(cè)試web應(yīng)用。
除了通過(guò)npm安裝selenium-webdriver之外,還需要安裝瀏覽器相應(yīng)的驅(qū)動(dòng)。
它相應(yīng)的api和用法selenium-webdriver
在我們new一個(gè)WebDriver的過(guò)程中,selenium首先會(huì)確認(rèn)瀏覽器的native component是否存在可用而且匹配的版本,然后就在目標(biāo)瀏覽器里啟動(dòng)一整套Web Service,這套Web Service使用了selenium自己設(shè)計(jì)定義的協(xié)議,名字叫做The WebDriver Wire Protocol。這套協(xié)議非常之強(qiáng)大,幾乎可以操作瀏覽器做任何事情,包括打開、關(guān)閉、最大化、最小化、元素定位、元素點(diǎn)擊、上傳文件等等。
參考資料
https://www.cnblogs.com/linbo...
https://cloud.tencent.com/dev...
http://www.cnblogs.com/sunada...
總結(jié)
以上是生活随笔為你收集整理的浏览器自动化操作标准--WebDriver的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: zookeeper和etcd有状态服务部
- 下一篇: linux每日命令(5):mkdir命令