Мы зарелизили 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.
Если вы используете селенидовский TextReport или плагин AllureSelenide, вы привыкли в конце каждого теста видеть отчёт, в котором видны все действия: открыли страничку - нашли элемент - кликнули и т.д.
Теперь там добавилась запись, когда был запущен сам вебдрайвер. И когда закрыт. Иногда эта информация может быть полезна при отладке различных проблем с тестами.
Спасибо Petro Ovcharenko за PR 1715.
В Selenide 5.22.0 мы сделали хак, который менял дефалтовый селениумовский таймаут для общения с вебдрайвером с дичайших 3 часов до 2 минут.
Однако выяснилось, что при обновлении на Selenium 4 этот хак сломался (как и положено всем хакам). Теперь мы его реанимировали.
Напоминаю, теперь при общении между тестами и вебдрайвером таймаут такой:
См. commit cf02da5.
См. 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 у многих слетела версия Guava. Селенид явно определяет нужную версию Guava, так что вас эта проблема затронуть не должна. Но если что, убедитесь, что в вашем проекте никакой там градловский или мавеновский плагин не переопределяет версию Guava. Старый добрый пост про зависимости в помощь.
См. ченджлог Selenium и PR 1719.