天天看點

使用docker搭建selenium grid 分布式環境

  本文章隻做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/

  下載下傳後安裝預設安裝即可。

使用docker搭建selenium grid 分布式環境
  安裝完成後會出現Oracle VM Virtualbox、Docker QuickStart she和Kitematic三個檔案。
使用docker搭建selenium grid 分布式環境

Kitematic :這是 Docker 的 GUI 版本。

Docker QuickStart shell :這是一個已經配置好Docker的指令行環境。

Oracle VM Virtualbox:虛拟機。

2、擷取docker鏡像

  打開 Docker QuickStart shell,可以看到啟動後docker使用的Ip:192.168.99.100

使用docker搭建selenium grid 分布式環境

擷取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 鏡像:

使用docker搭建selenium grid 分布式環境

  擷取 selenium/node-chrome 鏡像:

使用docker搭建selenium grid 分布式環境

  擷取 selenium/node-chrome-debug 鏡像:

使用docker搭建selenium grid 分布式環境

3、運作docker鏡像

  1、啟動hub

$ docker run -d -p 4444:4444 -e GRID_MAX_SESSION=100 --name hub selenium/hub      
使用docker搭建selenium grid 分布式環境

參數說明:

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      
使用docker搭建selenium grid 分布式環境

  --link 是連結别名為hub的容器

  

  3、啟動chrome-debug

  開啟debug模式

$ docker run -d -p 5900:5900 --link hub:hub selenium/node-chrome-debug      
使用docker搭建selenium grid 分布式環境

4、檢視運作的容器

使用指令:docker ps -a

使用docker搭建selenium grid 分布式環境

5、通路hub節點檢視配置

ip為自己的docker的ip,也就是hub節點所在的伺服器ip

http://192.168.99.100:4444/grid/console

使用docker搭建selenium grid 分布式環境

4、安裝VNC Viewer

  VNC (Virtual Network Console)是虛拟網絡控制台的縮寫。是一款優秀的遠端控制工具軟體,在基于 UNIX 和 Linux 作業系統的免費的開源軟體,遠端控制能力強大,高效實用。

  下載下傳位址:https://www.realvnc.com/en/connect/download/viewer/

  打開後輸入通路的機器IP,會要求輸入密碼,預設密碼為 secret

使用docker搭建selenium grid 分布式環境

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中可以觀看到執行過程

使用docker搭建selenium grid 分布式環境