centos 七、docker、selenium/hub、selenium/node-chromehtml
此處docker的安裝方式不做講解,請參考:http://www.javashuo.com/article/p-qwmrfdkf-gr.htmljava
經過docker search selenium查看可用的selenium相關鏡像node
docker search selenium git
hub:selenium/hub
node:selenium/node-chrome,selenium/node-chrome-debuggithub
輸入命令chrome
docker pull selenium/hub docker
docker pull selenium/node-chrome windows
docker pull selenium/node-chrome-debug centos
node的鏡像有兩種,selenium/node-chrome與selenium/node-chrome-debug,帶有debug的鏡像中帶有vnc服務可使用vnc viewer進行鏈接查看運行狀況api
使用命令docker images查看下載的鏡像
docker images
docker run -d -p 4444:4444 --name hub selenium/hub
暴露4444端口用於後面腳本的運行
部署成功後,可經過http://主節點ip地址:4444/grid/console 查看節點狀態
docker run -P -d --link hub:hub --name chrome selenium/node-chrome
--link 是連接別名爲hub的容器
注意:這樣部署之後未設置容器的共享內存,頗有可能形成用例運行過程當中,內存不足卡死,可使用下面的命令給容器設置共享內存,官網建議爲2g
docker run -P -d --link hub:hub --name chrome --shm-size=2g selenium/node-chrome
node節點部署成功後會註冊到hub中心節點中,若是出現chrome標誌則註冊成功,能夠點擊view config查看詳細信息
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
當主節點與分支節點在不一樣的計算機上運行時,須要在部署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
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查看運行狀態
默認狀況下,節點瀏覽器以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鏈接分支節點查看分辨率是否設置成功
設置主節點的最大session數,部署鏡像是纔可以設置,使用GRID_MAX_SESSION,若是是存在多個分支節點,分支節點上的maxSession和不能大於主節點上的maxSession
docker run -d -p 4444:4444 -e GRID_MAX_SESSION=10 --name hub selenium/hub
默認狀況下,每一個節點瀏覽器只支持一個瀏覽器同時運行,能夠經過設置啓動參數NODE_MAX_INSTANCES,NODE_MAX_SESSION(節點中同時運行的最大測試數),兩個參數必須配合使用
docker run -d -p 5900:5900 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -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