Многие слышали про Selenium WebDriver — один из самых популярных инструментов для написания приёмочных/интеграционных тестов.

Используя Selenium, мы очень быстро заметили, что нам раз от раза приходится писать один и тот же код, чтобы инициализировать браузер вначале, закрыть его в конце, делать скриншоты после каждого упавшего теста и т.д. (пруфлинк).
Поэтому мы решили выделить этот повторяющийся код в отдельную библиотеку. Так на свет появился Selenide.
Selenide — это обёртка вокруг Selenium WebDriver, позволяющая быстро и просто его использовать при написании тестов, сосредоточившись на логике, а не суете с браузером.
Вот пример теста. Как видите, код минимален. Вызвал «open» — и браузер открылся.
При вызове метода open Selenide сам запускает браузер и открывает страницу localhost:8080/login (порт и хост конфигурируется, естественно). А также заботится о том, чтобы в конце браузер закрылся.
Selenide предоставляет дополнительные методы для действий, которые невозможно сделать одной командой Selenium WebDriver. Это выбор радио-кнопки, выбор элемента из выпадающего списка, создание снимка экрана, очистка кэша браузера и т.п.
И особняком стоит вопрос Ajax: при тестировании приложений, использующих Ajax, приходится изобретать код, который чего-то ждёт (когда кнопка станет зелёной). Selenide предоставляет богатый API для ожидания наступления различных событий:
1. Добавь в свой проект зависимость Selenide:
2. Импортируй парочку классов:
Готово! Пиши тесты, едрён-батон!
Да, мы в нашей фирме используем Selenide в нескольких реальных проектах:
Так что можете быть уверены, проект не сырой, реально используется и поддерживается.
Есть ещё небольшой эталонный open-source проект, в котором используется Selenide: игра Виселица.
Библиотека Selenium взяла своё название от химического элемента (Селен). А селениды — это соединения селена с другими элементами.
Вот и у нас:
Химичьте на здоровье!
UPD. В марте 2013 выпущена версия Selenide 2.0, в которой сильно обновился API. Теперь использование Selenide ещё проще и удобнее.
И ещё мы запустили сайт на русском языке: ru.selenide.org

Используя Selenium, мы очень быстро заметили, что нам раз от раза приходится писать один и тот же код, чтобы инициализировать браузер вначале, закрыть его в конце, делать скриншоты после каждого упавшего теста и т.д. (пруфлинк).
Поэтому мы решили выделить этот повторяющийся код в отдельную библиотеку. Так на свет появился Selenide.
Что такое Selenide
Selenide — это обёртка вокруг Selenium WebDriver, позволяющая быстро и просто его использовать при написании тестов, сосредоточившись на логике, а не суете с браузером.
Вот пример теста. Как видите, код минимален. Вызвал «open» — и браузер открылся.
@Test public void testLogin() { open("/login"); $(By.name("user.name")).sendKeys("johny"); $("#submitButton").click(); waitUntil(By.id("username"), hasText("Hello, Johny!")); $("#username").shouldHave(cssClass("green-text")); assertThat($("#insuranceDetailsHeader").getText(), equalTo("Страховые полисы")); assertThat($$("#paymentScheduleTable tr").size(), equalTo(7)); }
При вызове метода open Selenide сам запускает браузер и открывает страницу localhost:8080/login (порт и хост конфигурируется, естественно). А также заботится о том, чтобы в конце браузер закрылся.
Дополнительные вкусности Selenide
Selenide предоставляет дополнительные методы для действий, которые невозможно сделать одной командой Selenium WebDriver. Это выбор радио-кнопки, выбор элемента из выпадающего списка, создание снимка экрана, очистка кэша браузера и т.п.
@Test public void canFillComplexForm() { open("/client/registration"); setValue(By.name("user.name"), "johny"); selectRadio("user.gender", "male"); selectOption(By.name("user.preferredLayout"), "plain"); selectOptionByText(By.name("user.securityQuestion"), "What is my first car?"); followLink(By.id("submit")); takeScreenShot("complex-form.png"); } @Before public void clearCache() { clearBrowserCache(); }
И особняком стоит вопрос Ajax: при тестировании приложений, использующих Ajax, приходится изобретать код, который чего-то ждёт (когда кнопка станет зелёной). Selenide предоставляет богатый API для ожидания наступления различных событий:
@Test public void pageUsingAjax() { waitFor("#username"); waitUntil("#username", hasText("Hello, Johny!")); waitUntil("#username", hasAttribute("name", "user.name")); waitUntil("#username", hasClass("green-button")); waitUntil("#username", hasValue("Carlson")); waitUntil("#username", appears); waitUntil("#username", disappears); }
Я хочу попробовать, с чего начать?
1. Добавь в свой проект зависимость Selenide:
<dependency> <groupId>com.codeborne</groupId> <artifactId>selenide</artifactId> <version>1.6</version> </dependency>
2. Импортируй парочку классов:
include static com.codeborne.selenide.Navigation.* include static com.codeborne.selenide.DOM.*
Готово! Пиши тесты, едрён-батон!
Кто-нибудь это реально использует?
Да, мы в нашей фирме используем Selenide в нескольких реальных проектах:
- Java + ANT + JUnit
- Java + Gradle + JUnit
- Scala + ANT + ScalaTest
Так что можете быть уверены, проект не сырой, реально используется и поддерживается.
Есть ещё небольшой эталонный open-source проект, в котором используется Selenide: игра Виселица.
Откуда такое название — Selenide?
Библиотека Selenium взяла своё название от химического элемента (Селен). А селениды — это соединения селена с другими элементами.
Вот и у нас:
- Selenide = Selenium + JUnit
- Selenide = Selenium + TestNG
- Selenide = Selenium + ScalaTest
- Selenide = Selenium + что угодно
Химичьте на здоровье!
UPD. В марте 2013 выпущена версия Selenide 2.0, в которой сильно обновился API. Теперь использование Selenide ещё проще и удобнее.
И ещё мы запустили сайт на русском языке: ru.selenide.org