Selenide. Selenium WebDriver
В ходе работы над системой автоматизации полиграфического предприятия Ardecs Print Activity, мы столкнулись с необходимостью автоматизации тестов. Наряду с использованием Selenium WebDriver, было принято решение изучить возможности фреймворка для автоматизированного тестирования веб-приложений на основе Selenium WebDriver - Selenide.
Selenium WebDriver - один из самых популярных инструментов для написания приёмочных/интеграционных тестов. Написание UI тестов - непростая задача, есть ряд проблем, с которыми сталкиваются все без исключения, прежде всего это Ajax-запросы, динамические страницы и таймауты. Selenide может помочь решить эти проблемы: он позволяет быстро и просто использовать Selenium WebDriver при написании тестов, сосредоточившись на логике, а не суете с браузером.
Ключевые особенности Selenide:
- Лаконичный синтаксис в духе jQuery
- Автоматическое решение большинства проблем с Ajax, ожиданием и таймаутами
- Управление жизнедеятельностью браузера
- Автоматическое создание скриншотов
Selenide предоставляет дополнительные методы для действий, которые невозможно сделать одной командой Selenium WebDriver, например, выбор радио-кнопки, выбор элемента из выпадающего списка, создание снимка экрана, очистка кэша браузера.
Наличие AJAX-запросов может доставить много неудобств при создании автоматизированных UI-тестов. В то время как Selenium предлагает богатый API для ожидания разного рода событий, Selenide просто предлагает не заморачиваться. Если нужно проверить, что кнопка зелёная, то Selenide просто подождёт, пока она станет зелёной. По умолчанию таймаут конфигурируется 4 секунды.
public void pageUsingAjax() {
$("#username").shouldBe(visible); // ждёт, пока элемент появится
$("#username").shouldHave(text("Hello, Johny!")); // ждёт, пока текст элемента изменится на "Hello, Johny!"
$("#login-button").shouldHave(cssClass("green-button")); // ждёт, пока кнопка станет зелёной
$("#login-button").shouldBe(disabled); // ждёт, пока кнопка станет неактивной
$(".error").shouldNotBe(visible); // ждёт, пока элемент исчезнет
$(".error").should(disappear); // попробуйте-ка сделать это с Selenium в одну строчку!
}
В Selenide с использованием JUnit или TestNG возможно автоматически делать скриншоты добавлением буквально одной строки. Подходит это не только для ошибочных тестов, но и для всех тестов вообще.
public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests();
@Rule
public ScreenShooter makeScreenshotOnEveryTest = ScreenShooter.failedTests().succeededTests();
Библиотека Selenide взяла свое название от химического элемента Селен. А селениды - это соединения Селена с другими элементами.
Selenide = Selenium + JUnit; Selenide = Selenium + TestNG; Selenide = Selenium + ScalaTest; Selenide = Selenium + что угодно.
Selenide используется многими фирмами в реальных проектах, продукт поддерживается и развивается.
Применение Selenide в работе с Ardecs Print Activity значительно упростило и ускорило тестирование в процессе разработки. Полученный опыт позволяет проводить качественное тестирование в других наших проектах.