- PVSM.RU - https://www.pvsm.ru -
Многие слышали про Selenium WebDriver [1] — один из самых популярных инструментов для написания приёмочных/интеграционных тестов.
Используя Selenium, мы очень быстро заметили, что нам раз от раза приходится писать один и тот же код, чтобы инициализировать браузер вначале, закрыть его в конце, делать скриншоты после каждого упавшего теста и т.д. (пруфлинк [2]).
Поэтому мы решили выделить этот повторяющийся код в отдельную библиотеку. Так на свет появился Selenide [3].
Selenide [3] — это обёртка вокруг 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 [4]:8080/login (порт и хост конфигурируется, естественно). А также заботится о том, чтобы в конце браузер закрылся.
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.*
Готово! Пиши тесты, едрён-батон!
Да, мы в нашей фирме [5] используем Selenide в нескольких реальных проектах:
Так что можете быть уверены, проект не сырой, реально используется и поддерживается.
Есть ещё небольшой эталонный open-source проект, в котором используется Selenide: игра Виселица [6].
Библиотека Selenium взяла своё название от химического элемента (Селен). А селениды — это соединения селена с другими элементами.
Вот и у нас:
Химичьте на здоровье!
Автор: asolntsev
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/testirovanie/15381
Ссылки в тексте:
[1] Selenium WebDriver: http://code.google.com/p/selenium/
[2] пруфлинк: http://habrahabr.ru/post/114145/
[3] Selenide: https://github.com/codeborne/selenide
[4] localhost: http://localhost
[5] в нашей фирме: http://ru.codeborne.com/
[6] игра Виселица: https://github.com/asolntsev/hangman-java
Нажмите здесь для печати.