В череде статей я бы хотел поговорить о настройках селенида. Когда я только начинал свой путь тестировщика я считал, что для настройки всего лишь необходимо указать браузер и путь к драйверу, но с опытом и решении все более нестандартных задач, приходилось изучать и применять другие. Цель статей - описать и показать на примерах настройки, и их довольно много. Для того чтобы не перегружать информацией и удобства чтения разделю на несколько частей по смыслу. Давайте в первой части рассмотрим настройку браузера.
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
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();
}
}
Данная статья была посвящена запуска и настройки браузера. В следующей статье поговорим о DriverManager, который отвечает за скачивание и автоматическую настройку драйвера. Всем спасибо за то что прочитали.
p.s.
Ссылка на 2 часть
Ссылка на 3 часть
Как же без ссылки на репозиторий с кодом)