一. 簡介
目前容器技術不斷發展,越來越多的應用部署到容器上,改變了軟體部署的方式。是以我們考慮利用Docker容器技術并且結合Selenium Grid來搭建一套Web分布式測試叢集。
Docker
二. 準備工作
Docker環境
首先需要在本機安裝Docker環境,這裡就不具體介紹如何在不同系統安裝Docker了。安裝好Docker以後,輸入docker version檢視docker的版本資訊驗證是否安裝成功。
Docker Version
Selenium相關鏡像
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節點上
docker run -d -P -p 5901:5900 --link selenium-hub:hub wywincl/node-firefox-debug
四. 測試
執行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:4444/wd/hub
Input Text id=kw Robot Framework
Click Button id=su
Capture Page Screenshot
Sleep 5s
Close Browser
*** Keywords ***
執行測試用例
robot demo.robot
https://link.jianshu.com?t=https://asciinema.org/a/butc6ldex3by09b0m4l4g37s3 https://link.jianshu.com?t=https://asciinema.org/a/butc6ldex3by09b0m4l4g37s3 效果 https://link.jianshu.com?t=https://asciinema.org/a/butc6ldex3by09b0m4l4g37s3 Robot Test Results
我們可以通過vncviewer連接配接到我們的node-firefox-debug執行個體來檢視實際運作效果。
vncviewer
Docker桌面顯示
Firefox IN Docker
上面的Case,我們用了截圖關鍵字
Capture Page Screenshot
, 是以我們看到在容器中的firefox的截圖頁面。友善調試。
Selenium-Screenshot
點選
預覽視訊,檢視實際示範效果。
通過hub-console檢視節點注冊情況
Selnium hub Grid Console
到此,我們就完成了在Docker中建構Firefox執行執行個體了。後面我們會重點介紹如何利用docker-compose,docker-swarm來建構分布式Web測試叢集。同時利用jenkins實作持續內建,達到Devops最佳實踐。
最終的效果圖如下:
selenium grid with docker
五. 貢獻
大家應該注意到了容器中的firefox顯示中文出現了部分亂碼情況,由于目前還沒有時間解決該問題,希望大家有空可以幫忙解決。項目位址
node-firefox-debug, 歡迎大家pull request.
簡介:
Docker container for creating a selenium node with Firefox, only for development.
https://link.jianshu.com?t=http://microbadger.com/images/wywincl/node-firefox-debug https://link.jianshu.com?t=http://microbadger.com/images/wywincl/node-firefox-debug https://link.jianshu.com?t=http://microbadger.com/images/wywincl/node-firefox-debug https://link.jianshu.com?t=http://microbadger.com/images/wywincl/node-firefox-debug