Всем привет!
Я хочу рассказать про библиотеку для написания UI тестов Selenide.
Selenide - это обёртка вокруг Selenium WebDriver, дающая удобный синтаксис и решающая большинство проблем, связанных с Ajax и таймаутами.
Сразу пример кода:
@Test
public void userCanLoginByUsername() {
open("http://google.com");
$(By.name("q")).setValue("selenide").pressEnter();
$("#results").shouldHave(text("Selenide.org")); // Само подождёт, пока у элемента появится нужный текст
}
Как видите, код теста простой и читаемый. Selenide избавляет вас от необходимости открывать/закрывать браузер и пропихивать во все методы переменную webdriver.
Заинтересовавшихся добро пожаловать в вводную статью "Что такое Selenide". А в этой статье есть много примеров для сравнения, как сделать одну и ту же вещь с помощью голого WebDriver и Selenide. А ещё про Selenide рассказывали на недавней конференции SeleniumCamp 2013 в Киеве. Видео есть здесь.
В одну строчку!
Selenide в одну строчку решает многие проблемы, которые с Selenium WebDriver требуют значительно больше кода.
Например, "как снимать скриншоты" - с Selenide решается в одну строку:
@Rule
public ScreenShooter makeScreenshotOnFailure = ScreenShooter.failedTests();
Другой пример - как подождать, пока элемент появится на странице после Ajax запроса.
С Selenide над этим вообще не надо ломать голову - он сам подождёт всего чего нужно:
$("#results").shouldHave(text("Selenide.org")); // Само подождёт, пока у элемента появится нужный текст
Совсем свежий пример: как проверить, существует ли элемент.
Опять же, с Selenide не нужны try/catch и вся эта монструзятина. В одну строчку:
if ($("#results").exists()) { ... существует ...}
И так далее.
Кто попробует - расскажите, как прошло. Что получилось, что не получилось, что понравилось, что не понравилось.