Одновременное проведение нескольких тестов на селен - программирование
Подтвердить что ты не робот

Одновременное проведение нескольких тестов на селен

Я хотел бы запускать несколько Selenium Tests (на сервере Jenkins) одновременно.

В настоящее время он запускает только один тест, поэтому ChromeDriver, кажется, обменивается данными через специальный порт. Так что, как мне кажется, мне нужно передать какие-то настройки порта через Selenium в ChromeDriver, чтобы запустить несколько тестов.

Веб-сайт Selenium, к сожалению, пуст для этой темы: http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#parallelizing-your-test-runs

С моей точки зрения, не имеет значения, проходит ли тест локально или на Дженкинсе, проблема такая же. Нам нужно как-то настроить ChromeDriver. Вопрос в том, как именно.

У кого-нибудь есть идеи или указатели, на которых нужно смотреть и какие файлы задействованы, чтобы сделать это?

4b9b3361

Ответ 1

То, что вы ищете, это Selenium Grid 2.

Сетка позволяет:

  • распределяя тесты на нескольких машинах (параллельное выполнение)
  • управлять несколькими средами из центральной точки, что позволяет легко запускать тесты против обширной комбинации браузеров/ОС.
  • минимизировать время обслуживания сетки, позволяя вам реализовать пользовательские перехватчики, чтобы, например, использовать виртуальную инфраструктуру.

Ответ 2

Вы можете легко запускать несколько экземпляров хромирования локально, просто создавая несколько объектов-драйверов, chromedriver будет держать профили раздельными и найти порт для запуска самостоятельно.

Вот ссылка на пример, который может запускать несколько тестов с использованием TestNG и Maven:

https://github.com/Ardesco/Selenium-Maven-Template

Просто выполните клонирование вышеуказанного проекта и запустите в командной строке следующее:

mvn verify -Pselenium-tests -Dbrowser=chrome -Dthreads=2

Он использует возможности TestNG для управления пулом потоков и открывает несколько экземпляров, если это указано. Вы можете сделать то же самое с jUnit, но вам нужно написать собственный тестовый бегун, чтобы запустить тесты в отдельные потоки.

Если вы решите использовать gradle, он может справиться с управлением пулами потоков для вас как с TestNG, так и с jUnit, и многие люди предпочитают его maven.

Ответ 3

Это старый вопрос, но для тех, кто все еще читает, очень просто запустить несколько экземпляров Selenium WebDriver параллельно без, используя Grid. Я успешно проверил это с помощью Chrome, FireFox и PhantomJs (до 5). Каждый экземпляр WebDriver использует изолированный контекст, поэтому конфликт сеанса не должен быть проблемой. Будьте осторожны с конфликтами на стороне сервера, хотя, в зависимости от требований вашего сайта!

Для пользователей NUnit NUnit 3.2.1 теперь имеет свойство TestContext.Current.WorkerId, которое позволит вам изолировать один экземпляр WebDriver для каждого работника NUnit.

  • Запуск нескольких браузеров на одном компьютере часто будет препятствовать производительности, поэтому будьте осторожны, чтобы не использовать слишком много экземпляров браузеров, или вы можете увеличить время тестирования!

Ответ 4

Я согласен использовать сетку в сочетании с Maven-параллельным классом, вы можете запускать несколько экземпляров на одном ПК. Дженкинс возможен, если вы используете Ant для своей сборки, тогда вы можете указать, какой тест можно запустить параллельно. Его довольно легко настроить, хотя:)