天天看點

Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

一. 簡介

目前容器技術不斷發展,越來越多的應用部署到容器上,改變了軟體部署的方式。是以我們考慮利用Docker容器技術并且結合Selenium Grid來搭建一套Web分布式測試叢集。

Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

Docker

二. 準備工作

Docker環境

首先需要在本機安裝Docker環境,這裡就不具體介紹如何在不同系統安裝Docker了。安裝好Docker以後,輸入docker version檢視docker的版本資訊驗證是否安裝成功。

Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

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
Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻
https://link.jianshu.com?t=https://asciinema.org/a/butc6ldex3by09b0m4l4g37s3 效果 https://link.jianshu.com?t=https://asciinema.org/a/butc6ldex3by09b0m4l4g37s3
Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

Robot Test Results

我們可以通過vncviewer連接配接到我們的node-firefox-debug執行個體來檢視實際運作效果。

Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

vncviewer

Docker桌面顯示

Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

Firefox IN Docker

上面的Case,我們用了截圖關鍵字

Capture Page Screenshot

, 是以我們看到在容器中的firefox的截圖頁面。友善調試。

Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

Selenium-Screenshot

點選

預覽視訊

,檢視實際示範效果。

通過hub-console檢視節點注冊情況

Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

Selnium hub Grid Console

到此,我們就完成了在Docker中建構Firefox執行執行個體了。後面我們會重點介紹如何利用docker-compose,docker-swarm來建構分布式Web測試叢集。同時利用jenkins實作持續內建,達到Devops最佳實踐。

最終的效果圖如下:

Docker+Selenium Grid建構分布式Web測試環境一. 簡介二. 準備工作三. 啟動容器四. 測試五. 貢獻

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