一. 簡介
當前容器技術(shù)不斷發(fā)展,越來越多的應(yīng)用部署到容器上,改變了軟件部署的方式。因此我們考慮利用Docker容器技術(shù)并且結(jié)合Selenium Grid來搭建一套Web分布式測試集群。
二. 準備工作
Docker環(huán)境
首先需要在本機安裝Docker環(huán)境,這里不具體介紹如何在不同系統(tǒng)安裝Docker了。安裝好Docker以后,輸入docker version查看docker的版本信息驗證是否安裝成功。
Docker Version
Selenium相關(guān)鏡像
selenium/hub
wywincl/node-firefox-debug
從docker hub上拉取新的鏡像
docker pull selenium/hub
docker pull wywincl/node-firefox-debug
三. 啟動容器
第一步,啟動selenium-hub
docker run -d -p 4444:4444 --name selenium-hub selenium/hub
第二步,啟動node-firefox-debug,注冊到hub節(jié)點上
docker run -d -P -p 5901:5900 --link selenium-hub:hub wywincl/node-firefox-debug
四. 測試
執(zhí)行docker ps命令,查看容器是否正常啟動;
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
運行一個基本的測試用例demo.robot,如下所示, 我們的用例是用Robot Framework編寫的,具體編寫方法請參考Robot Framework測試框架
*** 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í)行測試用例
robot demo.robot
我們可以通過vncviewer連接到我們的node-firefox-debug實例來查看實際運行效果。
Docker桌面顯示
上面的Case,我們用了截圖關(guān)鍵字Capture Page Screenshot, 因此我們看到在容器中的firefox的截圖頁面。方便調(diào)試。
Selenium-Screenshot
點擊預(yù)覽視頻,查看實際演示效果。
通過hub-console查看節(jié)點注冊情況
Selnium hub Grid Console
到此,我們完成了在Docker中構(gòu)建Firefox執(zhí)行實例了。后面我們會重點介紹如何利用docker-compose,docker-swarm來構(gòu)建分布式Web測試集群。同時利用jenkins實現(xiàn)持續(xù)集成,達到Devops佳實踐。
終的效果圖如下:
selenium grid with docker
五. 貢獻
大家應(yīng)該注意到了容器中的firefox顯示中文出現(xiàn)了部分亂碼情況,由于目前還沒有時間解決該問題,希望大家有空可以幫忙解決。項目地址node-firefox-debug, 歡迎大家pull request.