Вышла Selenide 5.23.0

Вышла Selenide 5.23.0

Проверки нового поколения
16.07.21

Добрый вечер!

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"));

Каждая из этих проверок:

  1. если надо, подождёт (по умолчанию до 4 секунд)
  2. добавится в отчёт (текстовой или аллюр)
  3. если урл по истечении 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.

Давайте проясним.

  1. Настройку Configuration.screenshots стоит прописать в false, если вам не хочется, чтобы селенид автоматически создавал скриншоты при падении тестов. Често говоря, не понимаю, в каких ситуациях это может быть полезно.
  2. А вот метод 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


Ссылки


Статистика

232+ тысяч скачиваний в месяц.

Беззаботного лета!


Андрей Солнцев

ru.selenide.org

16.07.21