Добрый вечер!
16 июля вышел релиз Selenide 5.23.0.
В нём появилось кое-что существенно новое для селенида.
Проверки нового поколения
Теперь в селениде есть встроенные проверки не только для веб-элементов, но и для некоторых других штук. С автоматическими ожиданиями, понятными сообщениями об ошибках, попаданием в отчёт и т.д. Всё как вы любите.
См. issue 1442. Спасибо Dmitriy Budim за запуск всей этой эпопеи в PR 1478.
Давайте посмотрим, что же это за проверки.
Проверки для URL
До сих пор в селениде было только два метода, позволяющие получить URL текущей страницы или текущего фрейма (в большинстве случаев это одно и то же).
String url1 = WebDriverRunner.url();
String url2 = WebDriverRunner.currentFrameUrl();
Как их проверять, было непонятно. И ещё непонятнее, как дождаться, что нужный урл загрузился.
Теперь такие проверки есть:
import static com.codeborne.selenide.Selenide.webdriver;
import static com.codeborne.selenide.WebDriverConditions.*;
webdriver().shouldHave(url("https://auth.google.com"));
webdriver().shouldHave(url("https://mastercard.ee"), Duration.ofSeconds(42));
webdriver().shouldNotHave(url("http://yandex.ru");
webdriver().shouldNotHave(urlStartingWith("ftp://"));
webdriver().shouldHave(currentFrameUrl(baseUrl + "/login.html"));
webdriver().shouldHave(currentFrameUrlStartingWith(baseUrl + "/logout.html"));
Каждая из этих проверок:
- если надо, подождёт (по умолчанию до 4 секунд)
- добавится в отчёт (текстовой или аллюр)
- если урл по истечении 4 секунд не такой - сделает скриншот и кинет ошибку
ConditionNotMetException
В лучших традициях селенида можно
- переопределять дефалтовый таймаут (4 секунды) на любой другой:
Configuration.timeout = 8000;
- задавать кастомный таймаут (вторым параметром типа
Duration.ofSeconds(42)
) - создавать свои кастомные проверки (см. пример)
Проверки для буфера обмена
Начиная с версии 5.20.0, в селениде есть метод для доступа к буферу обмена:
Clipboard clipboard = Selenide.clipboard();
Но если раньше можно было только засунуть и высунуть текст из буфера:
String foo = clipboard().getText();
clipboard().setText("bar");
То теперь его можно проверить - с дефалтовым и кастомным таймаутом, скриншотами и т.д.
clipboard().shouldHave(content("Hello fast World"));
clipboard().shouldHave(content("Hello slow World"), Duration.ofMillis(1500));
См. PR 1507
Проверки для localStorage
Начиная с версии 5.15.0, в селениде есть метод localStorage()
, возвращающий объект LocalStorage
.
Но у него были только методы getItem
и setItem
. Опять же, как их проверять и как дождаться нужного значения, было неясно.
Теперь ясно:
localStorage().shouldHave(item("cat”));
localStorage().shouldHave(itemWithValue("mouse", "Jerry”));
Кстати, заодно появился метод localStorage.getItems()
, возвращающий всё содержимое в виде мапы.
См. PR 1502
Проверки для sessionStorage
Всё то же самое, что и про localStorage
- добавились методы
sessionStorage().shouldHave(item("cat”));
sessionStorage().shouldHave(itemWithValue("mouse", "Jerry”));
Map<String, String> items = sessionStorage.getItems();
См. PR 1502
Небольшой рефакторинг
Мы сделали классы StaticConfig
и StaticDriver
непубличными.
Нам кажется, они никому не должны быть нужны вне селенида.
А в ваших проектах они используются? Пишите нам, если у вас развалилась компиляция. :)
И небольшой багфикс:
Теперь метод Selenide.screenshot("filename")
снова делает скриншот, даже если настройка Configuration.screenshots
выставлена в false
.
Давайте проясним.
- Настройку
Configuration.screenshots
стоит прописать вfalse
, если вам не хочется, чтобы селенид автоматически создавал скриншоты при падении тестов. Често говоря, не понимаю, в каких ситуациях это может быть полезно. - А вот метод
Selenide.screenshot("filename")
можно вызвать в любой момент теста, чтобы явно сделать скриншот, независимо от того, упал тест или не упал. Тоже не очень понимаю, в каких ситуациях это может быть полезно.
Но суть в том, что второй метод работает независимо от первой настройки. Теперь можно выключить автоматические скриншоты, но дёргать их руками только там, где надо.
См. issue 1477 и PR 1506
selenide-selenoid 1.1.4
Мы выпустили selenide-selenoid:1.1.4
с обновлением на Selenide 5.23.0
selenide-appium 1.6.7
Мы выпустили selenide-appium:1.6.7
с обновлением на Selenide 5.23.0
Ссылки
- Статья Selenium или Selenide? в корпоративном блоге “Прикладные Технологии”
- Статья Selenide – UI tests in minutes от Anil Kulkarni
Статистика

232+ тысяч скачиваний в месяц.
Беззаботного лета!
ru.selenide.org
16.07.21