Здравствуйте, друзья!
Мы зарелизили Selenide 6.3.0.
Приготовьте бутеры и погнали!
Добавили метод switchTo().frame(timeout)
с кастомным таймаутом
В селениде есть метод switchTo().frame(name)
для переключения между фреймами. Как всегда, со встроенной ожидалкой и другими плюшками.
Но что, если фрейм грузится дольше, чем таймаут по умолчанию (4 секунды)?
Теперь вы можете передать дополнительный параметр Duration
- таймаут для переключения во фрейм:
switchTo().frame("ifrm"); // по умолчанию ждёт до 4 секунд
switchTo().frame("ifrm", Duration.ofSeconds(6)); // а вот теперь до 6 секунд
Добавили селекторы 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:
Новости
- Мы создали группу в LinkedIn Selenide User Group!
- Пост от Miklós Szeles Selenium or Selenide?
- Селенид попал в подборку 5 Testing Automation Tools в блоге компании Qameta Software (это которая Allure Report)
- Селенид попал в подборку Top Java Libraries for Automation Testing in 2022
- Пост про Селенид в блоге компании Knoldus
- Пост The software that doesn’t need documentation от Gaveen Nayanajith
- Пост начало прекрасной дружбы от Miklós Szeles
Я думаю, это начало прекрасной дружбы!
ru.selenide.org
07.02.22