Найти в Дзене

Как Запустить тесты через браузер Docker в Intellij IDEA JAVA. Кроссбраузерность. Контейнеры через WebDriverManager. Часть 4.

Оглавление

Ранее мы рассмотрели различные способы запуска тестов в разных браузерах. В предыдущей статье мы научились запускать тесты в контейнере Docker. Сегодня я расскажу вам о ещё более удобном способе запуска тестов в различных браузерах.

Так как способ будет связан с контейнерами в Docker, советую ознакомиться с подборкой статьей по самому Docker, с 0 рассказываю что это, и как им пользоваться.

Docker. Модуль 4 | Обучение тестированию | Дзен

Простой пример

Давайте начнём с рассмотрения отдельного класса, чтобы понять, как работает этот метод. Идея заключается в том, что мы инициализируем наши тесты с помощью специального инструмента WebDriverManager.

Это библиотека, которая позволяет автоматически выбирать версию браузера. Возможно, вы забыли об этом, поэтому вот статья, которая поможет вам вспомнить:

Так вот у этой библиотеки очень много возможностей. Одна из которых инициализировать ваши тесты в отдельном контейнере, с нужным браузером.

То есть вам не нужно будет:

  • Скачивать самому нужный образ в Docker
  • Запускать контейнер от данного образа
  • Указывать доп настройки для вашего кода

Всё максимально просто. Для начала запустим наш Docker. У нас сейчас нет ни образов, ни контейнеров.

-2

Создадим отдельный класс, и пропишем следующий код

WebDriver driver;
WebDriverManager wdm = WebDriverManager.chromedriver().browserInDocker();

Мы создали драйвер. Раньше мы указывали создание нашего браузера:

WebDriverManager.chromedriver().setup();
chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(true);
chromeOptions.addArguments("window-size=1920, 1080");
driver = new RemoteWebDriver(new URL(remote_url_chrome), chromeOptions);
driver.setFileDetector(new LocalFileDetector());

Таким образом наш класс будет выглядеть следующим образом.

-3

@BeforeEach - перед тестами создаём наш браузер в Docker.

@AfterEach - после теста закрываем наш браузер с контейнером.

@Test - в самом тесте открываем любую ссылку в браузере.

Первый запуск этого теста займёт довольно много времени. Это связано с тем, что в процессе будут автоматически установлены необходимые образы в Docker и запущен контейнер. Фактически это время уходит на загрузку и установку данных. В последующие разы запуск будет происходить быстрее.

-4

Как вы заметили я вообще ничего не указывал. Ни адрес, ни порт. Я просто нажал на запуск и тесты прошли. Не магия ли?

Внедрение способа в наш проект

В прошлой статье наш запуск через контейнер в докере выглядел следующим образом.

-5

Давайте для начала изменим его под запуск в 1 контейнере с браузером Chrome, а после добавим другой браузер.

-6

Теперь, чтобы запустить тесты через контейнер, нам не нужно указывать адрес и порт этого контейнера вручную. Всё происходит автоматически. Просто переходим к тестам и запускаем любой из них.

-7

В классах PageObject указываем WebDriver driver.

public IDEA(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}

Заместо

public IDEA(WebDriver driver) {
this.driver = (EventFiringWebDriver) driver;
PageFactory.initElements(driver, this);
}

Это классы в которых скрыта логика всех локаторов страницы. Об этом рассказывал а статье ранее.

После этого можем посмотреть отчёт и увидим, что у нас в контейнере прошёл тест и сделал скриншот.

-8

Добавим небольшую настройку, чтобы экран при запуске не был таким маленьким

-9

И всё, мы научились запускать наши тесты, в контейнере докера, но только через один браузер, как же запустить другой?

Кроссбраузерность в WebDriverManager

Вот список браузеров, которые поддерживает WebDriverManager

WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.edgedriver().setup();
WebDriverManager.operadriver().setup();
WebDriverManager.chromiumdriver().setup()
WebDriverManager.iedriver().setup();

Поэтому добавить поддержку другого браузера не составит труда. Мы просто укажем параметр, и при запуске наших тестов сможем указать нужное название браузера. После этого тесты откроются в нужном браузере прямо в контейнере. Не нужно указывать другой порт или что-то ещё.

-10

Сама строка запуска выглядит следующим образом

mvn clean test -Dtest="JAVATest#Attribute" -Dbrowser="FireFox"

Здесь всё также, перед первым запуском теста, к вам установится образ докера с нужным браузером. После запуск будет быстрым.

Вот он второй образ

-11

Как можем заметить, первый запуск у меня прошёл за 43 секунды, у меня достаточно быстрый интернет, так что скачалось быстро.

-12

Весь код описанный в статье вы сможете найти в открытом доступе на GitHub. Выгружаю все изменения. Данный код вынес в отдельную ветку - RemoteWebDriverDocker, чтобы вы смогли использовать его без изменений других уроков.

-13
GitHub - Timurchik57/JAVA at RemoteWebDriver

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию