Вышла Selenide 6.3.0

Вышла Selenide 6.3.0

Начало прекрасной дружбы
07.02.22


Здравствуйте, друзья!


Мы зарелизили Selenide 6.3.0.

Приготовьте бутеры и погнали!


Добавили метод switchTo().frame(timeout) с кастомным таймаутом

В селениде есть метод switchTo().frame(name) для переключения между фреймами. Как всегда, со встроенной ожидалкой и другими плюшками. Но что, если фрейм грузится дольше, чем таймаут по умолчанию (4 секунды)?

Теперь вы можете передать дополнительный параметр Duration - таймаут для переключения во фрейм:

  switchTo().frame("ifrm");                          // по умолчанию ждёт до 4 секунд
  switchTo().frame("ifrm", Duration.ofSeconds(6));   // а вот теперь до 6 секунд

Спасибо @donesvad за PR 1722.


Добавили селекторы byTagAndText и withTagAndText

До сих пор в селениде были методы для поиска элементов по тексту:

  import static com.codeborne.selenide.Selectors.*;

  $(byText("Hello world")).shouldHave(text("Hello World"));
  $(withText("Hello")).shouldHave(text("Hello World"));

Иногда этого мало: когда элементов с таким текстом несколько, и хочется из них выбрать только один - с нужным тэгом.

Теперь и для этого есть методы:

  import static com.codeborne.selenide.Selectors.*;

  $(byTagAndText("h1", "Hello world")).shouldHave(text("Hello World"));
  $(withTagAndText("h1", "Hello")).shouldHave(text("Hello World"));

Спасибо Maurizio Lattuada за issue 1650 и PR 1651.


Исправили ошибку в byTextCaseInsensitive

Теперь этот селектор игнорирует множественные пробелы и переводы строк в начале и конце текста (как и каноничный byText).

См. issue 1723 и PR 1724.


Добавили записи “webdriver create” в “webdriver close” в отчёт

Если вы используете селенидовский TextReport или плагин AllureSelenide, вы привыкли в конце каждого теста видеть отчёт, в котором видны все действия: открыли страничку - нашли элемент - кликнули и т.д.

Теперь там добавилась запись, когда был запущен сам вебдрайвер. И когда закрыт. Иногда эта информация может быть полезна при отладке различных проблем с тестами.

Спасибо Petro Ovcharenko за PR 1715.


Исправили переопределение селениумовского таймаута

В Selenide 5.22.0 мы сделали хак, который менял дефалтовый селениумовский таймаут для общения с вебдрайвером с дичайших 3 часов до 2 минут.

Однако выяснилось, что при обновлении на Selenium 4 этот хак сломался (как и положено всем хакам). Теперь мы его реанимировали.

Напоминаю, теперь при общении между тестами и вебдрайвером таймаут такой:

  • таймаут на соединение - 10 секунд
  • таймаут на чтение - 1.5 минуты

См. commit cf02da5.


Убрали двойное заворачивание ошибок “Element not found” друг в друга

См. issue 1705 и PR 1706.


Добавили поддержку типа аутентификации BEARER

В селениде давно уже есть способ аутентификации с разными типами:

open("/basic-auth/hello", BASIC, "scott", "tiger");

но точно правильно работал только тип BASIC. Остальные особо никто не проверял. :)

Оказалось, что тип BEARER не работал. Теперь вот работает (а остальные по-прежнему никто не проверял :)).

Использовать так:

    open("/bearer-token-auth/hello", BEARER, new BearerTokenCredentials("token-123"));

См. PR 1714.


Теперь пустые настройки типа selenide.remote считаются незаданными

Это должно чутка упростить жизнь девопсам.
При настройках всяких там джобов и пайплайнов на CI сервере, часто приходится использовать переменные для задания настроек селенида:

-Dselenide.remote=${env.GRID_URL}

И если в какой-нибудь среде переменной GRID_URL не окажется, то селенид грохнется, т.к. попытается использовать пустой урл для selenide.remote.

Так было раньше. А теперь селенид будет считать, что selenide.remote просто не задан, и продолжить работать как обычно.

См. Alexei Vinogradov за issue 1656 и Boris Osipov за PR 1663.


Обновились на Selenium 4.1.2

После обновления на Selenium 4.1.2 у многих слетела версия Guava. Селенид явно определяет нужную версию Guava, так что вас эта проблема затронуть не должна. Но если что, убедитесь, что в вашем проекте никакой там градловский или мавеновский плагин не переопределяет версию Guava. Старый добрый пост про зависимости в помощь.

См. ченджлог Selenium и PR 1719.


UPD Selenide 6.3.1

Небольшое обновление Selenide 6.3.1:

  • #1731 вернули возможность использовать софт ассерты в TestNG в методах @Before* и @After* (ранее мы их случайно запретили в Selenide 6.2.0) - см. PR #1732
  • #1729 Обновились с Netty 4.1.73.Final на 4.1.74.Final


UPD Selenide 6.3.2

Ещё обновление Selenide 6.3.2:

  • #1733 Запилили костыль для баги селениума 10345, из-за которой метод FirefoxDriver.close() валится после обновления на Firefox 97.
  • #1736 Обновились с BrowserUpProxy 2.1.3 на 2.1.4
  • #1611 Обновили версию Java с 8 до 17.

А вот тут давайте остановимся поподробнее. Теперь проект Selenide собирается на Java 17, но бинарники selenide-*.jar по-прежнему собираются для Java 8. Поэтому

  • разработчики селенида могут использовать все последние фичи языка Java, а
  • пользователи селенида могут по-прежнему запускать свои тесты на Java 8 (хоть мы и советуем обновить джавушку, конечно).

А стало это возможным благодаря инструменту Jabel и лично Sergei Egorov, придумавшему этот изящный хак (а ещё причастному к TestContainers и AtomicJar).


UPD Selenide 6.3.3

Ещё обновление Selenide 6.3.3:

  • #1737 позволили переопределять настройки Firefox для скачивания файлов
  • #1740 обновились на WebDriverManager 5.1.0


UPD Selenide 6.3.4

Ещё обновление Selenide 6.3.4:

  • #1746 показываем ожидаемый атрибут при падении $.shouldHave(attribute(...)).
  • #1748 исправили имя модуля в сгенерированных бинарниках селенида


UPD Selenide 6.3.5

Ещё обновление Selenide 6.3.5:

  • #1755 починили скачивание файлов через прокси, если ответ сервера закодирован - см. PR #1756


Новости


Я думаю, это начало прекрасной дружбы!

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

ru.selenide.org

07.02.22