Selenium Docker 分布式搭建


Selenium 系列篇(八):Docker 分布式搭建

星安果 AirPython 5月21日

點擊上方“AirPython”,選擇“加為星標

第一時間關注 Python 技術干貨!

 

1. 前言

上篇文章 提到可以利用 Selenium Grid 搭建分布式自動化測試環境

由於 Docker 可以高效地利用系統資源,提供一致性運行環境,不需要額外配置,更加方便進行持續集成和持續交付等優勢

所以,在實際項目中,一般會采用 Docker 容器來搭建分布式環境

2.下載鏡像

首先,在服務器下載安裝 Docker CE 免費版本,並配置加速鏡像源,然后重啟 Docker 應用

# 編輯文件,輸入鏡像加速地址
sudo vi /etc/docker/daemon.json

# 輸入地址
# Docker中國官方鏡像加速
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

# 重啟docker
systemctl restart docker

接着,使用 docker pull 命令下載下面 3 個鏡像到本地:

1、selenium/hub:主節點鏡像 hub

2、selenium/node-chrome:node 節點

3、selenium/node-chrome-debug:帶有 VNC 服務端,便於觀看執行步驟

# 主hub
docker pull selenium/hub

# node節點
docker pull selenium/node-chrome

# selenium/node-chrome-debug VNC Server
docker pull selenium/node-chrome-debug

3.運行容器

使用 docker run 命令,可以直接通過鏡像創建一個容器並運行起來

首先,創建並啟動 1 個主 hub 容器,並使用 --name 參數進行重命名

# 主hub
# -P:將容器端口映射到docker主機的一個隨機端口上
# --name:重命名,便於管理
docker run -d -P --name hub_xag selenium/hub

然后,創建並啟動 1 個 Chrome node 節點容器,並使用 -p 參數,將容器的  5900 端口映射到主機的 5903 端口

# node節點
# --link:關聯到hub主節點
docker run -d -p 5903:5900 --link hub_xag:hub --name node1 selenium/node-chrome

最后,創建一個 chrome-debug 容器,並將端口映射到主機的 5900 端口上

# chrome-debug容器
docker run -d -p 5900:5900 --link hub_xag:hub selenium/node-chrome-debug

使用 docker ps -a 命令即可以查看容器的運行狀態及端口映射情況

需要注意的是,如果是部署在服務器,需要配置服務器防火牆和安全組規則

4.查看節點及啟動 VNC

使用 Chrome 打開通過 Docker 主機 IP + Hub 主節點映射的端口號組成的 URL

比如:http://139.199.xx.xx/grid/console

可以很直觀地看到當前 Hub 主節點下所有注冊的 Node 節點列表

然后,在本機上下載安裝  VNC Viewer,打開客戶端軟件

輸入 Docker 主機 IP + chrome-debug 映射在 Docker 主機的端口號,就可以實時查看 Docker 主機的運行情況

比如:http://139.199.xx.xx:5900    

需要注意的是,第一次登陸默認的密碼是:secret

5.編寫腳本並運行

隨手編寫一段腳本,將 command_executor 參數中的地址設置為上面 Hub 主節點 IP 地址

from selenium import webdriver

driver = webdriver.Remote(
command_executor='http://139.199.xx.xx:32768/wd/hub',
desired_capabilities={'browserName''chrome'}
)

driver.get('https://www.baidu.com')

driver.find_element_by_id("kw").send_keys("歡迎關注公眾號:AirPython")
driver.find_element_by_id("su").click()

print(driver.page_source)

運行腳本,可以發現 VNC Viewer 會展示完整的自動化過程。

6.最后

實際項目中,可以下載 selenium/node-firefox-debug 鏡像,通過鏡像開啟多個容器節點,只要保證端口號不沖突即可。

如此,結合 Docker,Selenium Grid 可以非常方便地創建、管理分布式自動化測試環境。

如果你覺得文章還不錯,請大家點贊分享下。你的肯定是我最大的鼓勵和支持。

 

留言送書
今日贈書:《Python入門到人工智能實戰》 PS:最近當當有滿 100 減 50 的活動
 

 

推薦閱讀

 

用 Python 分析微信群聊記錄,是怎樣一種體驗?

只需 10 行代碼,Python 教你自制屏幕翻譯工具,高效辦公

為了追到小姐姐,我用 Python 制作了一個機器人

 

 


免責聲明!

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



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