0

Я хотел бы использовать изображения Docker Selenium Grid для параллельного выполнения тестов.Как связать и масштабировать несколько контейнеров докеров?

Для этого я хочу отправить каждый набор тестов на другой узел браузера. Каждый узел должен быть соединен со своим докционированным сервером, чтобы тесты могли выполняться. Итак, мой вопрос - это лучший способ связать пары контейнеров?

Есть ли способ легко масштабировать пары сервер-узел, возможно, с помощью 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, чтобы вы начали работу, так как вы не указали язык &, с которым я больше всего знаком.

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, чтобы вы могли сохранять результаты/журналы/скриншоты, но я не знаю достаточно об установке, чтобы рассказать вам, как это сделать.

Я бы спросил, нужен ли вам селен-концентратор в этом случае, но он добавляет некоторые удобства, поэтому вы все равно можете его использовать.

+0

Благодарим за отзыв! Однако я хочу использовать Docker Compose для создания масштабируемой одноразовой среды. Каждый экземпляр будет состоять из более чем двух контейнеров, поэтому вместо того, чтобы масштабировать отдельные узлы отдельно, я надеялся, что существует способ вызвать несколько экземпляров всей инфраструктуры. – Jenny

+0

Я сделал редактирование, которое, надеюсь, объясняет, как вы могли бы использовать докер-композицию для достижения этого. Не уверен, что вы уже решили свою проблему, но если нет, я надеюсь, что это поможет. – joelnb

Смежные вопросы