一. 簡(jiǎn)介
當(dāng)前容器技術(shù)不斷發(fā)展,越來越多的應(yīng)用部署到容器上,改變了軟件部署的方式。因此我們考慮利用Docker容器技術(shù)并且結(jié)合Selenium Grid來搭建一套Web分布式測(cè)試集群。
二. 準(zhǔn)備工作
Docker環(huán)境
首先需要在本機(jī)安裝Docker環(huán)境,這里不具體介紹如何在不同系統(tǒng)安裝Docker了。安裝好Docker以后,輸入docker version查看docker的版本信息驗(yàn)證是否安裝成功。
Docker Version
Selenium相關(guān)鏡像
selenium/hub
wywincl/node-firefox-debug
從docker hub上拉取新的鏡像
docker pull selenium/hub
docker pull wywincl/node-firefox-debug
三. 啟動(dòng)容器
第一步,啟動(dòng)selenium-hub
docker run -d -p 4444:4444 --name selenium-hub selenium/hub
第二步,啟動(dòng)node-firefox-debug,注冊(cè)到hub節(jié)點(diǎn)上
docker run -d -P -p 5901:5900 --link selenium-hub:hub wywincl/node-firefox-debug
四. 測(cè)試
執(zhí)行docker ps命令,查看容器是否正常啟動(dòng);
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
39693a681c29 wywincl/node-firefox-debug "/opt/bin/entry_point" 24 minutes ago Up 24 minutes 0.0.0.0:5901->5900/tcp elegant_dijkstra
da8c2598666f selenium/hub "/opt/bin/entry_point" 9 days ago Up 51 minutes 0.0.0.0:32768->4444/tcp selenium-hub
運(yùn)行一個(gè)基本的測(cè)試用例demo.robot,如下所示, 我們的用例是用Robot Framework編寫的,具體編寫方法請(qǐng)參考Robot Framework測(cè)試框架
*** Setting ***
Library Selenium2Library
*** Variables ***
${HOST} https://www.baidu.com
*** Test Cases ***
T_Case_1
Log Open Browser
Open Browser ${HOST} firefox remote_url=http://0.0.0.0:32768/wd/hub
Input Text id=kw Robot Framework
Click Button id=su
Capture Page Screenshot
Sleep 5s
Close Browser
*** Keywords ***
執(zhí)行測(cè)試用例
robot demo.robot
我們可以通過vncviewer連接到我們的node-firefox-debug實(shí)例來查看實(shí)際運(yùn)行效果。
Docker桌面顯示
上面的Case,我們用了截圖關(guān)鍵字Capture Page Screenshot, 因此我們看到在容器中的firefox的截圖頁面。方便調(diào)試。
Selenium-Screenshot
點(diǎn)擊預(yù)覽視頻,查看實(shí)際演示效果。
通過hub-console查看節(jié)點(diǎn)注冊(cè)情況
Selnium hub Grid Console
到此,我們完成了在Docker中構(gòu)建Firefox執(zhí)行實(shí)例了。后面我們會(huì)重點(diǎn)介紹如何利用docker-compose,docker-swarm來構(gòu)建分布式Web測(cè)試集群。同時(shí)利用jenkins實(shí)現(xiàn)持續(xù)集成,達(dá)到Devops佳實(shí)踐。
終的效果圖如下:
selenium grid with docker
五. 貢獻(xiàn)
大家應(yīng)該注意到了容器中的firefox顯示中文出現(xiàn)了部分亂碼情況,由于目前還沒有時(shí)間解決該問題,希望大家有空可以幫忙解決。項(xiàng)目地址node-firefox-debug, 歡迎大家pull request.