Ура, товарищи!
На дворе 23 января.
Несанкционированные релизы сейчас запрещены, поэтому сегодня у нас просто негативное падение номера версии. Обновляйтесь: Selenide 5.18.0.
Приглашаю вас на маленькую виртуальную экскурсию по изменениям в 5.18.0.
Устраивайтесь поудобнее.
Выключили логи вебдрайвера по умолчанию
Начиная с версии 5.13.0, Selenide писал логи вебдрайвера в файлы build/reports/tests/webdriver.uuid.log
.
Тогда это казалось полезным, но оказалось, что логи эти занимают довольно много места и особо никого не интересуют.
Поэтому мы всё-таки решили не включать их по умолчанию.
Логи вебдрайвера отправляются в комнату для мусора.
Если надо, вы всегда можете включить эти логи настройкой
Configuration.webdriverLogsEnabled = true
.
См. issue 1365 и PR 1379.
Заменили тип параметра “timeout” с Long на Duration
… в методах коллекций. Теперь вместо
$$.shouldHave(texts(...), 5000);
модно будет писать
$$.shouldHave(texts(...), Duration.ofSeconds(5));
См. issue 1377.
Спасибо Ostap Oleksyn за PR 1377.
Ускорили поиск вложенных элементов в shadow dom
Одна из фич, которые есть Selenide, но нет в Selenium webdriver - это shadow dom:
$(shadowCss("p", "#shadow-host", "#inner-shadow-host"))
.shouldHave(text("The Shadow-DOM inside another shadow tree"));
В дереве DOM может быть сколько угодно shadow root внутри других shadow root.
Чтобы найти все элементы внутри всех вложенных shadow root, метод $(shadowCss())
вызывал в цикле
хитрый JavaScript код для каждого shadow root по отдельности.
И это может быть медленно, потому что каждый вызов webdriver занимает время.
Теперь $(shadowCss())
дёргает ещё более хитрый рекурсивный JavaScript,
который находит все элементы во всех shadow dom за один вызов.
См. PR 1373.
Отдельное спасибо sakamoto66 за issue 1246 и PR 1233. К сожалению, он не был влит, но дал нам пищу для размышлений.
Исправили проверки $.shouldNot(and(...))
и $.shouldNot(or(...))
Пользователь pavelpp обнаружил в селениде багу, комбинируя not
с условиями and
и or
:
$(".lolkek").shouldNotBe(visible, ofSeconds(5)); // работает
$(".lolkek").shouldNotBe(and("foo", visible)); // падает
$(".lolkek").shouldNotBe(or("foo", visible)); // падает
Не отвертишься. Пришлось чинить.
См. issue 1369 и PR 1370.
Кстати, мы запретили and
и or
только с одним условием.
То есть теперь строка or("foo", visible)
не скомпилируется.
Придётся написать как минимум два условия: or("foo", visible, enabled)
.
Согласитесь, это логично. Зачем нам выбор из одного?
Обнаруживаем конфликт в настройке “browserName”
Так уж вышло, что для задания браузера есть две разных настройки:
- Главная -
Configuration.browser
- Другая -
Configuration.browserCapabilities["browserName"]
(не знаю, зачем она вообще нужна)
И у вас может открыться неожиданный браузер, если вы не задали первую, но задали вторую. В общем, теперь селенид обнаруживает такой конфликт и сразу кидает ошибку, чтобы всем всё стало понятно:
IllegalArgumentException: Conflicting browser name: 'chrome' vs. 'firefox'
Подчёркиваю: настройки Configuration.browser
должно хватать во всех случаях, поэтому вторую не надо никуда пихать.
См. issue 1366 и PR 1374.
Починили показ таймаута в отчёте
Недавно мы добавили в методы $.should*
параметр timeout
с типом Duration
.
А потом оказалось, что он непонятно отображался в отчётах.
Например, строка $("h1").shouldBe(visible, Duration.ofSeconds(1))
в отчёте выглядела так:
$("h1") should be([visible, PT1M])
И хотя эта “PT1M” на самом деле отвечает стандарту ISO и означает “time period 1 minute”, мы всё же заменили её на более понятные “300 ms”, “1s”, “1.500 s.” и т.п.
См. issue 1376 и PR 1378.
Обновились на WebDriverManager 4.3.1
Как обычно, изменения описаны здесь.
Вот и всё на сегодня. Обновляйтесь и делитесь впечатлениями. Заводите баги на гитхабе, жалуйтесь в чатиках, материтесь в твиттере.
Читальня
На хабре вышла расшифровка доклада “Как законтрибьютить в опенсорс, чтобы не сгореть со стыда” со смачной картинкой Мастера Йоды. Этот доклад мы с Артёмом Ерошенко делали на фестивале TechTrain осенью 2020.
По ссылке и текст, и видео: кому что больше нравится.

Буду счастлив, если пользователи Селенида его посмотрят. Вы же хотите приобщиться к таинству опен-сорса?
Всем щастья!
ru.selenide.org
23.01.21