我想使用Selenium Grid的Docker鏡像來並行執行測試。如何鏈接和縮放多個碼頭集裝箱?
爲了做到這一點,我希望將每個測試套件分發到不同的瀏覽器節點。每個節點必須與其自己的dockerized服務器配對,以便測試可以運行。所以我的問題是鏈接容器對的最佳方式是什麼?
有沒有辦法輕鬆擴展服務器 - 節點對,或許使用Docker Compose?
我對所有這些都很新穎,所以如果我試圖達到的目標不是很明確,那麼表示歉意。
我想使用Selenium Grid的Docker鏡像來並行執行測試。如何鏈接和縮放多個碼頭集裝箱?
爲了做到這一點,我希望將每個測試套件分發到不同的瀏覽器節點。每個節點必須與其自己的dockerized服務器配對,以便測試可以運行。所以我的問題是鏈接容器對的最佳方式是什麼?
有沒有辦法輕鬆擴展服務器 - 節點對,或許使用Docker Compose?
我對所有這些都很新穎,所以如果我試圖達到的目標不是很明確,那麼表示歉意。
我不是100%,就需要每個測試套件分派到不同的節點清楚,但它聽起來像這樣的事情應該滿足您的要求:
hub:
image: selenium/hub:2.53.0
ports:
- "4444:4444"
firefox:
image: selenium/node-chrome:2.53.0
links:
- hub
chrome:
image: selenium/node-chrome:2.53.0
links:
- hub
如果您保存在一個目錄docker-compose.yml
然後cd
到你可以做類似的目錄:
docker-compose up -d
docker-compose scale firefox=3 chrome=3
這會給你每次瀏覽器和硒樞紐將處理分配你的測試節點,使得它們只運行一組3個節點的測試一次。
然後你告訴所有的測試中使用遠程webdriver的&您可以控制哪些瀏覽器被用於每個組測試:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities=DesiredCapabilities.CHROME)
driver.get("http://www.seleniumhq.org/")
很明顯,你將需要修改這個使用所需語言來編寫測試。我剛剛在Python中發佈了一個快速示例,以便讓您順利進行,因爲您沒有指定一種我最熟悉的語言&。
編輯:通過運行
hub:
image: selenium/hub:2.53.0
links:
- app
firefox:
image: selenium/node-chrome:2.53.0
links:
- hub
chrome:
image: selenium/node-chrome:2.53.0
links:
- hub
test:
image: your/testimage
links:
- hub
app:
image: your/appimage
然後,您可以啓動整個安裝的多個實例(在泊塢窗,compose.yml是目錄):
滿足您實際需求的可能方式docker-compose --project-name <identifier> up -d
如果您將<identifier>
更改爲每個實例獨有的內容,那麼您可以同時運行多個實例。您也可能想要將volume
添加到您的測試容器中,以便您可以保留結果/日誌/屏幕截圖,但我並不知道有關安裝的足夠信息以告訴您如何執行此操作。
我會質疑在這種情況下是否需要硒轂,但它確實增加了一些便利性,因此您可能仍然希望使用它。
感謝您的迴應!但是,我想使用Docker Compose創建可擴展的一次性環境。每個實例將由兩個以上的容器組成,因此不是單獨擴展節點,而是希望有一種方法可以調出整個基礎架構的多個實例。 – Jenny
我做了一個編輯,希望解釋如何使用docker-compose來實現這一點。不知道你是否已經解決了你的問題,但如果沒有,那麼我希望它有幫助。 – joelnb