本文章只做docker搭建selenium grid 分布式環境步驟說明,對於selenium grid中的參數、流程、原理等不做說明。selenium grid的詳細情況可查看官方文檔https://wizardforcel.gitbooks.io/selenium-doc/official-site/selenium-grid.html
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協議開源。Docker 是一個用於開發,交付和運行應用程序的開放平台。Docker 使您能夠將應用程序與基礎架構分開,從而可以快速交付軟件。借助 Docker,您可以與管理應用程序相同的方式來管理基礎架構。通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產環境中運行代碼之間的延遲。
使用docker 可以自動執行自動化測試用例和持續集成、發布。
1、安裝docker
windows安裝使用阿里雲的鏡像來下載docker toolbox,下載地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
下載后安裝默認安裝即可。
安裝完成后會出現Oracle VM Virtualbox、Docker QuickStart she和Kitematic三個文件。
Kitematic :這是 Docker 的 GUI 版本。
Docker QuickStart shell :這是一個已經配置好Docker的命令行環境。
Oracle VM Virtualbox:虛擬機。
2、獲取docker鏡像
打開 Docker QuickStart shell,可以看到啟動后docker使用的Ip:192.168.99.100
獲取docker-selenium鏡像,在github上有現成的鏡像: https://github.com/SeleniumHQ/docker-selenium 。
例如獲取 selenium/hub 、 selenium/node-chrome、 selenium/node-chrome-debug 三個鏡像。其中selenium/node-chrome-debug啟動后會啟動一個VNC Server,在腳本執行過程中,本地可以連上VNC Server,通過界面查看服務器的腳本執行情況。使用命令:
$ docker pull selenium/hub $ docker pull selenium/node-chrome $ docker pull selenium/node-chrome-debug
獲取 selenium/hub 鏡像:
獲取 selenium/node-chrome 鏡像:
獲取 selenium/node-chrome-debug 鏡像:
3、運行docker鏡像
1、啟動hub
$ docker run -d -p 4444:4444 -e GRID_MAX_SESSION=100 --name hub selenium/hub
參數說明:
run:運行一個鏡像,創建出一個容器。
-p 5555:4444 :映射容器里端口。
-d: 后台運行
--name:容器名稱,這里我就直接把這個容器成為hub
2、啟動node
在hub節點中注冊node節點
$ docker run -d -p 5555:5555 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 --shm-size=2g --link hub:hub --name node1 selenium/node-chrome
--link 是鏈接別名為hub的容器
3、啟動chrome-debug
開啟debug模式
$ docker run -d -p 5900:5900 --link hub:hub selenium/node-chrome-debug
4、查看運行的容器
使用命令:docker ps -a
5、訪問hub節點查看配置
ip為自己的docker的ip,也就是hub節點所在的服務器ip
http://192.168.99.100:4444/grid/console
4、安裝VNC Viewer
VNC (Virtual Network Console)是虛擬網絡控制台的縮寫。是一款優秀的遠程控制工具軟件,在基於 UNIX 和 Linux 操作系統的免費的開源軟件,遠程控制能力強大,高效實用。
下載地址:https://www.realvnc.com/en/connect/download/viewer/
打開后輸入訪問的機器IP,會要求輸入密碼,默認密碼為 secret
5、腳本運行
編寫python自動化腳本
from time import sleep from selenium import webdriver driver = webdriver.Remote( command_executor='http://192.168.99.100:4444/wd/hub', desired_capabilities={'browserName': 'chrome'} ) driver.get('https://www.baidu.com') print("start run") driver.find_element_by_id("kw").send_keys("docker selenium") driver.find_element_by_id("su").click() sleep(1) driver.quit() print("end...")
運行腳本,運行后在VNC Viewer中可以觀看到執行過程