Найти в Дзене

Java Selenide. Configuration. 1 Часть. Настройки браузера

В череде статей я бы хотел поговорить о настройках селенида. Когда я только начинал свой путь тестировщика я считал, что для настройки всего лишь необходимо указать браузер и путь к драйверу, но с опытом и решении все более нестандартных задач, приходилось изучать и применять другие. Цель статей - описать и показать на примерах настройки, и их довольно много. Для того чтобы не перегружать информацией и удобства чтения разделю на несколько частей по смыслу. Давайте в первой части рассмотрим настройку браузера. BaseUrl Configuration.baseUrl BaseUrl - задает базовую ссылку baseUrl - часто используемая настройка в большинстве проектов, которая принимает базовый url открываемых страниц. Задав настройку в методе open не нужно передавать полную ссылку, а всего лишь часть, в которой находится страница. Сценарий большинства тестов будет прост - открытие ссылки на канал в Дзен. Создадим тест, в котором ссылка на Дзен будет базовой, а канал откроем с помощью метода open /// Тест открытия с помощ
Оглавление
Конфигурация
Конфигурация

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

Configuration

BaseUrl

Configuration.baseUrl

BaseUrl - задает базовую ссылку

baseUrl - часто используемая настройка в большинстве проектов, которая принимает базовый url открываемых страниц. Задав настройку в методе open не нужно передавать полную ссылку, а всего лишь часть, в которой находится страница.

Сценарий большинства тестов будет прост - открытие ссылки на канал в Дзен.

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

/// Тест открытия с помощью настройки 'baseURL'
@Test
public void testWithBaseURL() {
Configuration.baseUrl = "https://dzen.ru";
Selenide.open("/id/65d7431f1759d9595653fed1");
// Оставил для точки останова
System.out.println("opened");
}

BaseUrl является хорошим тоном в тестировании с помощью Selenide

BaseUrl - хороший тон
BaseUrl - хороший тон

Browser

browser - задает браузер, в котором будут выполняться тесты

Поддерживаемые значения:

1) chrome - Google Chrome

2) firefox - Firefox

3) ie - Internet Explorer

4) edge - Microsoft Edge

5) safari - Safari

Не секрет, что все браузеры отличаются в некоторых тонкостях отображения контента, данная настройка хороша для проверки нюансов отображения.

Для примера откроем ссылку на канал в браузерах, которые установлены у меня на ПК (Chrome и Edge)

Итак, тестовый класс:

/// Тесты открытия различных браузеров и версий
public class BrowserAndVersionTest {


/// Тест открытия с помощью Chrome
@Test
public void testWithChrome() {
Configuration.baseUrl = "https://dzen.ru";
Configuration.browser = "chrome";
Selenide.open("/id/65d7431f1759d9595653fed1");
// Оставил для точки останова
System.out.println("opened");
Selenide.closeWebDriver();
}


/// Тест открытия с помощью Edge
@Test
public void testWithEdge() {
Configuration.baseUrl = "https://dzen.ru";
Configuration.browser = "edge";
Selenide.open("/id/65d7431f1759d9595653fed1");
// Оставил для точки останова
System.out.println("opened");
Selenide.closeWebDriver();
}
}

Касательно Internet Explorer, для этого браузера существует настройка browserVersion, в которой можно указать версию этого старичка. Шутку про Explorer я оставлю ниже.

Старые шутки о главном)
Старые шутки о главном)

BrowserBinary

browserBinary - настройка, которая указывает путь к файлу для запуска драйвера.

Если нет возможности пользоваться DriverManager для автоматической загрузки и настройки драйвера, к примеру изолированный интернет или прокси, с которыми не удалось разобраться, то мы можем скачать драйвер вручную с официального сайта браузера и пользоваться им.

Для демонстрации создадим тест с ручным указанием пути к драйверу:

/// Тест пути драйвера
public class BrowserBinaryTest {

/// Настройка драйвера
@BeforeAll
public static void setup() {
Configuration.browserBinary = "C:/driver";
Configuration.baseUrl = "https://dzen.ru";
Configuration.browser = "chrome";
}

/// Тест открытия с помощью Chrome
@Test
public void testWithChrome() {
Selenide.open("/id/65d7431f1759d9595653fed1");
// Оставил для точки останова
System.out.println("opened");
Selenide.closeWebDriver();
}

}

BrowserCapabilities

browserCapabilities необходимы для тонкой настройки запуска браузера.

Пример тонких настроек браузера Google Chrome находятся тут

Для примера откроем хром c темной темой с помощью capabilities:

/// Тесты Capabilities
public class ChromeCapabilitiesTest {

/// Настройка драйвера
@BeforeAll
public static void setup() {
WebDriverManager.chromedriver().setup();
Configuration.baseUrl = "https://dzen.ru";
Configuration.browser = "chrome";
ChromeOptions options = new ChromeOptions();
options.addArguments("--force-dark-mode");
Configuration.browserCapabilities = options;
}

/// Тест открытия Chrome в темной теме\
/// с помощью capabilities
@Test
public void testWithChrome() {

Selenide.open("/id/65d7431f1759d9595653fed1");
// Оставил для точки останова
System.out.println("opened");
Selenide.closeWebDriver();
}

}

Я на темной стороне
Я на темной стороне

BrowserPosition

browserPosition позволяет установить положение браузера на рабочем столе.

Настройка принимает строка в виде "{x}x{y}" ("100x100");

Давайте создадим тест и разместим браузер в точке 10x10

/// Тесты BrowserPosition
public class ChromeBrowserPositionTest {

/// Настройка драйвера
@BeforeAll
public static void setup() {
WebDriverManager.chromedriver().setup();
Configuration.baseUrl = "https://dzen.ru";
Configuration.browser = "chrome";
Configuration.browserPosition = "10x10";
}

/// Тест открытия Chrome в темной теме\
/// с помощью capabilities
@Test
public void testWithChrome() {
Selenide.open("/id/65d7431f1759d9595653fed1");
// Оставил для точки останова
System.out.println("opened");
Selenide.closeWebDriver();
}
}

В итоге браузер открывается в левом верхнем углу с отступом по 10px

Позиция браузера
Позиция браузера

BrowserSize

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

По аналогии с положением размер задается с помощью строки "{ширина}x{высота}"

Для примера модифицируем тест выше и добавим помимо положения окна браузера на рабочем столе, еще и его размер, скажем 800x600

/// Тесты BrowserPosition
public class ChromeBrowserPositionTest {

/// Настройка драйвера
@BeforeAll
public static void setup() {
WebDriverManager.chromedriver().setup();
Configuration.baseUrl = "https://dzen.ru";
Configuration.browser = "chrome";
Configuration.browserPosition = "10x10";
Configuration.browserSize = "800x600";
}

/// Тест открытия Chrome c заданным размером
@Test
public void testWithChrome() {
Selenide.open("/id/65d7431f1759d9595653fed1");
// Оставил для точки останова
System.out.println("opened");
Selenide.closeWebDriver();
}
}

В результате браузер откроется следующим образом:

Положение и размер окна
Положение и размер окна

Headless

headless - настройка для отключения пользовательского интерфейса. Данная настройка скрывает пользовательский интерфейс браузера и запускает тесты в "тихом" режиме. По умолчанию - false, т.е. открытие с интерфейсом. Обычно используется для автоматических запусков тестов на виртуальных машинах или Docker и, соответственно, экономии ресурсов.

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

/// Тесты headless
public class HeadlessTest {

/// Настройка драйвера
@BeforeAll
public static void setup() {
WebDriverManager.chromedriver().setup();
Configuration.baseUrl = "https://dzen.ru";
Configuration.browser = "chrome";
Configuration.headless = true;
}

/// Тест открытия Chrome в режиме headless
@Test
public void testWithChrome() {
Selenide.open("/id/65d7431f1759d9595653fed1");
// Оставил для точки останова
System.out.println("opened");
Selenide.closeWebDriver();
}
}

-7

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

p.s.

Ссылка на 2 часть

Ссылка на 3 часть

Как же без ссылки на репозиторий с кодом)