Я не 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, чтобы вы начали работу, так как вы не указали язык &, с которым я больше всего знаком.
EDIT: Возможно способ удовлетворения действительного требования:
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
Я сделал редактирование, которое, надеюсь, объясняет, как вы могли бы использовать докер-композицию для достижения этого. Не уверен, что вы уже решили свою проблему, но если нет, я надеюсь, что это поможет. – joelnb