0

我想使用Selenium Grid的Docker鏡像來並行執行測試。如何鏈接和縮放多個碼頭集裝箱?

爲了做到這一點,我希望將每個測試套件分發到不同的瀏覽器節點。每個節點必須與其自己的dockerized服務器配對,以便測試可以運行。所以我的問題是鏈接容器對的最佳方式是什麼?

有沒有辦法輕鬆擴展服務器 - 節點對,或許使用Docker Compose?

我對所有這些都很新穎,所以如果我試圖達到的目標不是很明確,那麼表示歉意。

回答

0

我不是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添加到您的測試容器中,以便您可以保留結果/日誌/屏幕截圖,但我並不知道有關安裝的足夠信息以告訴您如何執行此操作。

我會質疑在這種情況下是否需要硒轂,但它確實增加了一些便利性,因此您可能仍然希望使用它。

+0

感謝您的迴應!但是,我想使用Docker Compose創建可擴展的一次性環境。每個實例將由兩個以上的容器組成,因此不是單獨擴展節點,而是希望有一種方法可以調出整個基礎架構的多個實例。 – Jenny

+0

我做了一個編輯,希望解釋如何使用docker-compose來實現這一點。不知道你是否已經解決了你的問題,但如果沒有,那麼我希望它有幫助。 – joelnb