Linux系統下搭建Selenium Grid分布式測試環境


1.使用工具

  centos 7、docker、selenium/hub、selenium/node-chrome

2.安裝docker

  此處docker的安裝方式不作講解,請參考:https://www.cnblogs.com/deai/p/11039071.html

3.獲取selenium鏡像

   查找鏡像

通過docker search selenium查看可用的selenium相關鏡像

 docker search selenium 

hub:selenium/hub
node:selenium/node-chrome,selenium/node-chrome-debug

輸入命令

 docker pull selenium/hub 

 docker pull selenium/node-chrome 

 docker pull selenium/node-chrome-debug 

下載相關鏡像

node的鏡像有兩種,selenium/node-chrome與selenium/node-chrome-debug,帶有debug的鏡像中帶有vnc服務可以在windows環境下使用vnc viewer進行連接查看運行情況

使用命令docker images查看下載的鏡像

  docker images 

4.部署鏡像

hub的部署

 docker run -d -p 4444:4444 --name hub selenium/hub 

暴露4444端口用於后面腳本的運行

部署成功后,可通過http://主節點ip地址:4444/grid/console 查看節點狀態

node的部署

 docker run -p 5555:5555 -d --link hub:hub --name chrome selenium/node-chrome 

--link 是鏈接別名為hub的容器

-p 指將容器的5555端口映射到主機的5555端口上,這樣訪問主機5555端口時則自動轉發到docker容器內部,這里5555表示node容器運行端口為5555

注意:這樣部署以后未設置容器的共享內存,很有可能造成用例運行過程中,內存不足卡死,可以使用下面的命令給容器設置共享內存,官網建議為2g

 docker run -p 5555:5555 -d --link hub:hub --name chrome --shm-size=2g selenium/node-chrome

 

node節點部署成功后會注冊到hub中心節點中,如果出現chrome標志則注冊成功,可以點擊view config查看詳細信息

node-debug的部署

 docker run -d -p 5900:5900 -p 5555:5555 --shm-size=2g --link hub:hub selenium/node-chrome-debug 

debug鏡像在部署是需要暴露5900端口用於vnc服務的連接,可以下載vnc viewer連接進鏡像中,vnc的初始密碼為:secret

 

5.節點在不同計算機上

當主節點與分支節點在不同的計算機上運行時,需要在部署node時添加啟動參數

seleniumHQ網站:https://github.com/seleniumHQ/docker-selenium,網站上有詳細說明,以及如何搭建集群

如:主節點運行在192.168.1.165上,分支節點運行在192.168.1.117上

  docker run -d -p < node_port >:5555 -e HUB_HOST = < hub_ip | hub_name > -e HUB_PORT = 4444 -e REMOTE_HOST = "http:// <node_ip | node_name>:<node_port>" selenium/node-chrome:3.14.59-palladium 

<node_port> 分支節點端口號

<hub_ip|hub_name> 此處只用填寫主節點的ip地址

<node_ip | node_name> 分支節點的ip地址

<3.141.59-palladium> 指定版本號

完整命令:

 docker run -d -p 5555:5555 -e HUB_HOST=192.168.1.165 -e HUB_PORT=4444 -e REMOTE_HOST="http://192.168.1.117:5555" selenium/node-chrome:3.141.59-palladium 

6.運行測試腳本 

 1 public class Test {
 2     public static void main(String[] args) throws Exception {
 3         DesiredCapabilities browserDriver;
 4         browserDriver = DesiredCapabilities.chrome();
 5         String url = "http://192.168.1.117:4444/wd/hub";
 6         WebDriver driver = new RemoteWebDriver(new URL(url),browserDriver);
 7         driver.get("https://www.baidu.com/");
 8         driver.findElement(By.id("kw")).sendKeys("Selenium");
 9         driver.findElement(By.id("su")).click();
10         Thread.sleep(2000);
11         System.out.println("運行結束");
12         driver.quit();
13     }
14 }

 

如果運行過程中沒有報錯且成功打印信息則證明環境搭建成功,也可以使用vncverw連接chrome-node-debug查看運行狀態

 

7.擴展部分

一、設置分支節點瀏覽器的分辨率信息

默認情況下,節點瀏覽器以1360 x 1020的屏幕分辨率,顏色深度24位運行。這些設置可以通過調整啟動參數SCREEN_WIDTH(寬)SCREEN_HEIGHT(高)SCREEN_DEPTH(色位)指定需要的分辨率與顏色深度

 docker run -d -p 5900:5900 -p 5555:5555 -e SCREEN_WIDTH=1920 -e SCREEN_HEIGHT=1080 -e SCREEN_DEPTH=24 --shm-size=2g --link hub:hub selenium/node-chrome-debug  

使用vnc連接分支節點查看分辨率是否設置成功

注意:只有帶debug的鏡像容器才能夠設置容器的寬高,未帶debug標簽的鏡像容器設置寬高后無效果(運行腳本失敗截圖時果然發現,暫時未找到解決方法)

二、主節點(hub)並發數設置

    設置主節點的最大session數,部署鏡像是才能夠設置,使用GRID_MAX_SESSION,如果是存在多個分支節點,分支節點上的maxSession和不能大於主節點上的maxSession

      docker run -d -p 4444:4444 -e GRID_MAX_SESSION=10 --name hub selenium/hub 

三、分支節點(node)並發數設置

默認情況下,每個節點瀏覽器只支持一個瀏覽器同時運行,可以通過設置啟動參數NODE_MAX_INSTANCES,NODE_MAX_SESSION(節點中同時運行的最大測試數),兩個參數必須配合使用

  docker run -d -p 5900:5900 -p 5555:5555 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=-e SCREEN_WIDTH=1920 -e SCREEN_HEIGHT=1080 -e SCREEN_DEPTH=24 --shm-size=2g --link hub:hub selenium/node-chrome-debug 

         驗證並發數設置

    通過訪問主節點ip:4444/grid/console 查看子節點注冊狀態,出現五個chrome圖標,標識能同時啟動五個chrome瀏覽器

    

    跨平台

    Grid支持不同平台的節點連接,這里我們再將windows平台下的node節點注冊到linxu主節點下

    1.windows平台下使用grid首先需要下載selenium的jar包,這里使用的是3.12的版本

     要求:

      1):JDK環境(這里不做贅述,可以百度查看)

      2):selenium-server-standalone-3.12.jar

     下載連接:https://selenium-release.storage.googleapis.com/index.html,進入到3.12文件夾中,下載selenium-server-standalone-3.12.jar

    2.下載好以后,打開cmd並且進入到jar包下載目錄,並運行下方命令啟動node節點

  java -jar selenium-server-standalone-3.12.0.jar -role node -hub http://192.168.1.117:4444/grid/register/ -maxSession 5 -browser "browserName=firefox,version=68,platform=WINDOWS,maxInstances=5" -port 5555 

     windows系統下使用 -hub http://ip:端口/grid/register 進行的子節點注冊

     -browser 則是瀏覽器的啟動參數,browserName是瀏覽器名,version是瀏覽器版本號

     注冊成功后訪問主節點ip:4444/grid/console會出現下方界面,可以看出已經成功注冊了firefox瀏覽器的節點,並且並發數是5

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM