1. 程式人生 > 實用技巧 >docker Selenium-Grid環境搭建

docker Selenium-Grid環境搭建

原理可以自行了解:

總的來說 ,就是主節點和子節點,主節點發送任務request到子節點上,子節點收到命令並且執行

那麼怎麼搭建這套環境呢,他們又是如何連線起來的呢

一、主節點hub

首先可以檢視和selenium相關的映象,找到我們需要啟動的映象

這裡使用 docker search selenium 可以檢視

這裡我們選擇selenium/hub映象

開啟映象,selenium/hub,命令如下:

sudo docker run -d -p 4444:4444 -e GRID_MAX_SESSION=200 --restart=always --name hub selenium/hub

docker run 可以直接執行映象, 首先它會去docker中檢視是否有映象selenium/hub,如果沒有則進入docker hub下載(docker pull selenium/hub),然後啟動;反之,直接啟動

映象啟動成功:http://localhost:4444/grid/console檢視是否有啟動,並且可以檢視子節點

二、子節點啟動

這裡我使用的是docker search selenium找到的selenium/node-chrome和selenium/node-chrome-debug;

debug中自帶vnc server 可以共開發者除錯

開啟debug映象:

sudo docker run -d -e NODE_MAX_INSTANCES=100 -e NODE_MAX_SESSION=100 --shm-size=5g -p 5900:5900 --link hub:hub --name node4 selenium/node-chrome-debug

這裡的5900埠暴露出來,才可以連線,否則會連線被拒:The connection was refused by the computer

開啟之後,需要輸入密碼:secret

成功執行後,可以看到介面:

三、執行指令碼檢視效果

指令碼:

from selenium import webdriver

# 連線到主節點
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
                          desired_capabilities={'browserName': 'chrome
'}) driver.get('https://www.baidu.com/') driver.find_element_by_id("kw").send_keys("小心走火") driver.find_element_by_id("su").click()

執行指令碼:內容如下

注意: 只執行一個case時,docker按順序選擇node節點執行一次該case。這樣開多個node節點,然後使用多執行緒執行,即可將case併發進行了