Docker建立Selenium容器

2022-06-23 16:15:08 字數 2759 閱讀 4115

seleniumhq官方專案: 專案目前快速迭代中。

selenium

這裡主要針對的是 selenium grid,它用於分散式自動化測試,就是一套selenium **可在不同的環境上執行。剛好,docker可快速的建立各種環境。

selenium grid 有兩個概念

hub :主節點,你可以看作 “北京總公司的測試經理”。

node:分支節點,你可以看作 “北京總公司的測試小兵a” 和 “上海分公司的測試小兵b”,還有 “深圳分公司的測試小兵c” …。

也就是說在selenium grid中只能有一個主hub,但可以在本地或遠端建立 n 多個分支node,測試指令碼指向主hub,由主hub 分配給本地/遠端node 執行測試用例。

docker selenium 環境安裝

以ubuntu為例,在ubuntu下安裝docker,請參考:docker安裝(ubuntu)

docker hub(倉庫):

$ sudo docker pull selenium/hub
$ sudo docker pull selenium/node-chrome
3、檢視映象

$  sudo docker images

repository tag image id created size

selenium/node-chrome latest 1eba57bd3d79 12 days ago 823mb

selenium/hub latest d1437f7d9f87 12 days ago 285mb

4、啟動主hub容器

$ sudo docker run -d -p --name selenium-hub selenium/hub

5、啟動分支node chrome 容器

$ sudo docker run -d --link selenium-hub:hub selenium/node-chrome

6、檢視容器

$ sudo docker images

container id image command created status ports names

9cd0dac69875 selenium/hub "/opt/bin/entry_poin…" 12 hours ago up 12 hours 0.0.0.0:32768->4444/tcp selenium-hub

18d139a6c36d selenium/node-chrome "/opt/bin/entry_poin…" 12 hours ago up 12 hours eloquent_gates

這裡需要注意,selenium/hub 容器的埠號為4444,對ubuntu對映的埠為32768,前面通過-p引數自動分配。

工作原理:

selenium grid指令碼 -> ubuntu(32768) -> hub容器(4444) -> node chrome 容器

建立grid測試指令碼與執行

1、編寫selenium grid 指令碼(grid_demo.py)

from selenium import webdriver

from time import sleep

driver = webdriver.remote(

command_executor='',

desired_capabilities=

)driver.get('')

print("get baidu")

driver.find_element_by_id("kw").send_keys("docker selenium")

driver.find_element_by_id("su").click()

sleep(1)

driver.get_screenshot_as_file("/home/fnngj/mypro/baidu_img.png")

driver.quit()

print("end...")

注意訪問的埠號和瀏覽器,因為我們只啟動了node chrome容器,如果這裡設定friefox的話,需要你啟動node firefox容器,hub找不到合適的node會報錯。

另外,我們為了驗證指令碼是否真的執行加上了列印和截圖。

2、執行指令碼

$ python3 grid_demo.py

get baidu

end...

3、檢視截圖

sudo docker run -d -p 4444:4444 --name selenium-hub selenium/hub

docker run -d -p 5901:5900 --name node58 --linkselehub:hub

Docker 容器

容器化是一種軟體開發方法,通過使用容器化的開發方法,應用程式或服務以及他們的依賴和配置可打包再一起成為一個容器映象。總之容器提供了 隔離性...

Docker容器

docker是一個容器,你也可以把它看作是一個輕量級,加強版的類似vmware的虛擬機器,它幾乎沒有任何額外開銷,並且你可以在同一臺機器上建...

Docker容器

一 什麼是docker 如圖 二 基本概念 docker主機 host 安裝了docker程式的機器 docker直接安裝在作業系統之上 d...