Найти тему

Кроссбраузерность в Intellij IDEA JAVA. Часть 2.

Оглавление

В прошлой статье мы с вами научились передавать параметр браузера в командной строке. Таким образом наши тесты будут запускаться либо в одном браузере либо в другом. Нам же нужно немного другой вариант - запустить один тест в нескольких браузерах поочерёдно. Давайте начнём разбирать сегодня данный способ.

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

Параметризованный тест

Для начала разберем что же это такое. К примеру нам нужно в тесте выполнить одно и тоже действие несколько раз. Мы можем создать тест и зациклить выполнение этого действия или же указать параметры. Разберём на примере:

-2

К созданному методу мы должны добавить нужные аннотации

  • @ParameterizedTest
  • @CsvSource
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

Это специальные аннотации, которые позволяют написать один тест, но запустится он столько раз, сколько вы указали параметров.

В данном случае тест запустится один раз и в ответе будет 11

-3

Мы к нашему параметру добавляем 10 и выводим в консоль. Давайте добавим несколько параметров и посмотрим на результат:

Тест запустился 5 раз и выполнил одно и тоже действие но с разными числами.

-4

Как же нам это поможет при запуске тестов через разные браузеры. Мы можем прописать в параметре название браузера и от этого будет зависеть на каком браузере запустится наш тест.

Запуск тестов в разных браузерах

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

-5

Мы выводили этот параметр через командную строку и могли запустить определённый тест на определённом браузере.

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

Поэтому создадим отдельный класс, в котором будут тесты направленные на кроссбраузерность.

И перенесём данную логику в отдельный класс.

-6

Мы не сделали ничего нового, просто скопировали инициализацию всех нужных переменных и поместили в метод setUp();.

Его мы будем использовать если наш тест нужно прогнать на кроссбраузерность. Как это будет выглядеть:

-7
  • Мы создаём тест с параметрами, о которых говорилось выше.
  • В параметрах указываем названия наших браузеров
  • 1 - создаём образ класса, в котором есть наш метод setUp, чтобы можно было его использовать
  • 2 - используем сам метод, с параметром, который есть в тесте (value). Как раз value будет поочерёдно равно, сначала Chrome, а после FireFox.
  • 3- Открываем любую страницу в браузере, у меня это сайт IDEA.

❗Важное замечание. В таком варианте, браузер откроется 3 раза! Это всё потому, что класс с тестами у меня унаследуется от Abstract, в котором также есть инициализация браузера (из прошлой статьи).

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

-8

Также, для ваших тестов лучше создать свой, отдельный TestListner, чтобы можно было выполнять действия после тестов, в случае падения и успеха.

Освежить знания о TestListner можно здесь:

Всё о генерации отчёта Allure в Intellij IDEA JAVA
Обучение тестированию27 марта 2024

-9

В конечном итоге ваш тест будет выглядеть так. Класс с инициализацией:

public class CrosBrowser {

public static EventFiringWebDriver driver;
public static ChromeOptions chromeOptions;
public static FirefoxOptions foxOptions;
public static WebDriverWait wait;
public static Actions actions;
public Properties props;
public SQL sql;
public static String Browser;

@Step("Запускаем тест через браузер = {0}")
public void setUp(String browser) throws IOException {
Browser = browser;
if (Browser.contains("Chrome")) {
WebDriverManager.chromedriver().setup();
chromeOptions = new ChromeOptions();
driver = new EventFiringWebDriver(new ChromeDriver(chromeOptions));
}
if (Browser.contains("FireFox")) {
WebDriverManager.firefoxdriver().setup();
foxOptions = new FirefoxOptions();
driver = new EventFiringWebDriver(new FirefoxDriver(foxOptions));
}
driver.manage().window().maximize();
driver.register(new Custom());
wait = new WebDriverWait(driver, 20);
actions = new Actions(driver);

sql = new SQL();
sql.Connect();

FileInputStream in = new FileInputStream("src/test/resources/my.properties");
props = new Properties();
props.load(in);
in.close();
}
}

Сам тест:

@ExtendWith(TestListnerCros.class)
@Epic("Тесты UI на разных браузерах")
@Feature("Направления")
public class CrosBrowserTest {

IDEA idea;
CrosBrowser crosBrowser;

@DisplayName("Кроссбраузерность")
@ParameterizedTest
@CsvSource({"Chrome", "FireFox"})
public void Browser (String value) throws IOException {
crosBrowser = new CrosBrowser();

crosBrowser.setUp(value);
driver.get("https://www.jetbrains.com/idea/");

System.out.println(value);
}
}

Ознакомиться с данным кодом, можете в моём проекте:

GitHub - Timurchik57/JAVA

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

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