На сьогоднішній день приємно дивує різноманітний вибір інструментів для автоматизованого тестування, що значно полегшує життя тестувальника та заощаджує дорогоцінний час. Неможливо уявити скільки часу було б витрачено на виконання одноманітних, рутинних дій під час тестування веб-проєктів. Але завдяки автоматизованому тестуванню даний процес значно спрощується.
Серед переліку програм, призначених для автоматизації тестування, особливу увагу слід приділити серії програмних продуктів Selenium. Їх різновид включає Selenium IDE, Selenium Grid, Selenium RC, Selenium Server та Selenium WebDriver. Про останній поговоримо більш детально в цій статті, а також з’ясуємо основне призначення, переваги та недоліки, а також розглянемо деякі практичні приклади застосування.
Що таке Selenium WebDriver та для чого він потрібен?
Selenium WebDriver – це гнучкий інструмент для автоматизованого тестування веб-проєктів на базі набору бібліотек для різних мов програмування, таких як Java, .Net (C#), Python, Ruby, PHP, Perl, JavaScript.
Даний інструмент підтримує роботу на базі Windows, macOS та Linux, а також найпоширеніші браузери Google Chrome, Firefox, Safari, Edge, Internet Explorer та навіть деякі браузери без графічного інтерфейсу. Використовується Selenium WebDriver найчастіше з такими видами тестування, як регресійне та функціональне.
Для того, щоб зрозуміти логіку роботи Selenium WebDriver потрібно розібратися з основними компонентами для взаємодії.
Архітектура Selenium WebDriver складається з 4-х компонентів:
- драйвер конкретного браузера;
- клієнтська бібліотека Selenium;
- браузер;
- протокол JSON Wire (JavaScript Object Notation).
Графічне зображення представлено на малюнку нижче.
Архітектура Selenium WebDriver
Якщо говорити простими словами то для того, щоб не повторювати одноманітних операцій в браузері при тестуванні, використовується webdriver браузера, який звертається до браузера, драйвер якого використано, та виконує послідовність дій через певний скрипт з бібліотеки Selenium. Прикладами дій можуть бути команди по знаходженню елементів, перехід за посиланнями, збір великих об’ємів даних (парсинг), натискання кнопок та ін. Взаємодія бібліотеки з веб-драйвером відбувається через JSON Wire Protocol.
Основні сутності та методи Selenium WebDriver
WebDriver – це найважливіша сутність, яка відповідає за управління діями браузера.
Webelement – друга важлива сутність, яка представляє собою абстракцію над конкретним веб-елементом (посиланням, кнопкою, полем для вводу та ін.).
Локатор – це тип веб-елементу, який потрібно знайти та над яким виконуватиме дії веб-драйвер.
By – це абстракція над локатором веб-елемента, клас необхідний для ідентифікації веб-елементів який має такий синтаксис By.локатор.
Нижче наведено список найбільш поширених типів локаторів та їх синтаксис:
- By.id – пошук елемента по атрибуту id;
- By.name – пошук елемента по атрибуту name;
- By.className – пошук елемента по назві класу, використовується коли на веб-сторінці відображається набір однотипних елементів;
- By.TagName – пошук елемента по атрибуту назви тега;
- By.LinkText – пошук елемента по конкретному тексту, якщо він точно відомий;
- By.PartialLinkText – пошук елемента по частковому збігу текста;
- By.cssSelector – пошук елемента по CSS-селектору, який визначає до якого елементу або групи елементів (якщо, це клас) буде застосовано стиль;
- By.XPath – пошук елемента по атрибуту XML path.
Переваги та недоліки Selenium WebDriver
Даний інструмент є потужним та досить популярним серед тестувальників, проте, як будь-яке інше програмне забезпечення, він має ряд переваг та недоліків.
Переваги:
- інтеграція з великою кількістю мов програмування та кросплатформність;
- простий набір команд та легкість створення скриптів за допомогою бібліотек;
- виконання авто-тестів можна здійснювати без участі людини та у будь-який час;
- безкоштовний продукт з відкритим вихідним кодом.
Недоліки:
- необхідність володіння навичками програмування;
- обмеженість функціоналу в порівнянні з платними аналогами;
- не може бути використаний для тестування графічних елементів та Flash-об’єктів;
- наявність дефектів у самих бібліотеках.
Робота з Selenium WebDriver
Для початку роботи з веб-драйвером попередньо потрібно встановити JDK 8 і вище (Java Development Kit), якщо автоматизація буде здійснюватись на мові Java та будь-яку програму для програмної реалізації. Прикладом може бути IntelliJ IDEA – це інтегроване середовище розробки ПЗ, яке є доволі зручним при роботі з веб-драйвером та є популярним інструментом в програмуванні. За допомогою нього можна налаштовувати та формувати зручні звіти по тестуванню та збір статистики.
Перед створенням проєкту в IntelliJ IDEA користувачу необхідно вибрати платформу, як засіб автоматизації, на якій буде здійснюватися тестування. В IntelliJ IDEA є перелік платформ, таких як Java, Maven, Gradle, Groovy, Kotlin та ін.
Створення проєкту в IntelliJ IDEA
В залежності від вибору платформи, будуть дещо різнитися скрипти бібліотек Selenium. Для прикладу нижче розглядається платформа Maven. Скрипти для Maven є дещо довшими ніж, наприклад, у інших платформ таких, як Gradle або Kotlin, проте синтаксис є більш звичним для нашого ока.
Приклад скрипта для Maven
Приклад скрипта для Gradle
Приклад скрипта для Kotlin
Після створення проєкту користувач побачить наступне:
Інтерфейс IntelliJ IDEA та створений проєкт
Після створення проєкту на платформі Maven, необхідно встановити зв’язок, так звану залежність новоствореного проєкту з бібліотекою Selenium. Бібліотеки можна використовувати на сайті за посиланням https://mvnrepository.com/, копіюючи скрипти для відповідної платформи Maven. Скрипт залежності в проєкті буде виглядати наступним чином:
Скрипт залежності в проєкті Maven
Також необхідно завантажити з мережі Інтернет сам драйвер браузера з відповідною версією. Посилання на сайти, де можна завантажити драйвери для браузерів наведено нижче:
Налаштування залежностей та веб-драйвера браузера – це перше, що необхідно зробити, для того, щоб приступити до процесу автоматизації. Так як тестування буде здійснювати в браузері Google Chrome, потрібно завантажити відповідний драйвер «chromedriver.exe» з версією, аналогічною версії браузера. Далі завантажений файл «chromedriver.exe» потрібно додати в папку «resources», яка за замовчуванням є в новоствореному проєкті.
Розміщення веб-драйвера в проєкті
Всі подальші дії, які будуть виконуватися над драйвером та безпосередньо елементами веб-сайту здійснюються в окремому класі java, який користувач також створює самостійно.
В цьому класі важливо вказати шлях до драйвера та властивості, без цього скрипт не буде працювати та неможливо буде виконати авто-тест. Шлях можна вказувати як відносний, так і абсолютний, якщо пам’ятаєте куди саме помістили файл «chromedriver.exe» в каталозі папок.
Скрипт вказання відносного шляху до веб-драйвера
Після всіх налаштувань проєкту можна приступати до виконання основної частини – написання авто-тесту для автоматизації порівняння вартості товару на сайті та в кошику після додавання товару користувачем для здійснення покупки. Варто звернути увагу, що в наведеному прикладі нижче, виконується подвійне додавання одного й того ж товару, а відповідно і перевірка вартості товару в кошику повинна враховувати подвійну вартість.
Авто-тест перевірки відповідності цін на сторінці товару та в кошику після додавання товару
Отже, для початку, необхідно знайти ряд елементів над якими виконуватимуться певні дії, здебільшого кліки або ж логічні операції порівняння. Це такі елементи, як конкретний товар на сторінці сайту, ціна товару, кнопка «Додати в кошик», кнопка «Кошик», випадаюче меню кошика, кнопка «Перейти до кошика» та вартість товару в кошику. Пошук елементів на сайті здійснюється за допомогою локаторів By.XPath. Синтаксис запису елементів в html-дереві, які перелічено вище, можна знайти та скопіювати через Chrome DevTools, як показано на малюнку нижче.
Копіювання елементів XPath
В кінці скрипта здійснюється порівняння вартості за допомогою оператора умови if...else. А в результаті запуску даного тесту отримуємо або успішну відповідність вартості товару, або знаходимо баг у вигляді відповіді в консолі IntelliJ IDEA.
Консоль результатів IntelliJ IDEA
На перший погляд, вищеописані маніпуляції можуть здаватися занадто складними, але у порівнянні з часткою витраченого часу на такі тести, воно того варте. Для будь-якого тестувальника, навіть якщо він спеціалізується на мануальному тестуванні, володіння інструментами автоматизації є своєрідним «must have» у скарбничці знань. Завжди цінується більше той спеціаліст, у якого є прагнення до розвитку та вдосконалення, а також, який володіє альтернативними методами вирішення тих чи інших проблем, і знання Selenium WebDriver не є виключенням.