Всем привет!
Вы, наверное, не знали, но сегодня, 24 февраля, в Эстонии чуть ли не главный праздник - День Независимости. Ровно 103 года назад Эстония была провозглашена независимым демократическим государством.
А спустя 93 года в Эстонии, в казематах компании Codeborne родилась библиотека Selenide. Это ли не чудо?
Дню независимости мы и посвящаем наш новый релиз Selenide 5.19.0.
Наконец-таки починили drag’and’drop
В селениде уже давно есть метод $.dragAndDropTo()
, но он фактически не работает. Под капотом он использует
селениумовский механизм Actions
, и что-то там явно сломано. Ну не тащит элемент и всё.
А теперь мы запилили альтернативную реализацию с помощью JavaScript. И она, похоже, работает во всех браузерах. Поэтому мы даже включили её по умолчанию.
// Рабочий вариант:
$("#drag1").dragAndDropTo("#div2");
$("#drag1").dragAndDropTo("#div2", usingJavaScript());
// Нерабочий вариант через Actions (ну вдруг он у вас почему-то работает):
$("#drag1").dragAndDropTo("#div2", usingActions());
См. issue 1110.
Спасибо Dmitriy Budim за PR 1412.
Поддержка Appium
Заодно мы выпустили и обновление библиотеки selenide-appium:1.6.2
, в которой метод $.dragAndDropTo()
,
теперь переопределён, так что он работает и на мобильниках.
См. PR #53.
Починили метод $.click(usingJavascript())
в Internet Explorer
См. issue 1406 и PR 1419.
Улучшили описание коллекции $$.snapshot()
У селенидовских коллекций есть один хитрый метод $$.snapshot()
.
Он запоминает текущее состоние коллекции, и при дальнейших обращениях не загружает её заново из браузера.
Это полезно для ускорения тестов, когда коллекция большая, и вы уверены, что её элементы уже точно не изменятся.
С ними была только маленькая проблемка: в отчётах выглядело не слишком красиво. Например, такая строка:
$$("#root li").snapshot().shouldHave(size(3))
при падении в отчёте выглядела как
List size mismatch: expected: = 3, actual: 2, collection: $$(2 elements)
Как видите, в описании нет селектора оригинальной коллекции, только (2 elements)
.
Теперь виден и селектор:
List size mismatch: expected: = 3, actual: 2, collection: #root li.snapshot(2 elements)
Спасибо Pavel Fokin за PR 1402.
Добавили метод $.getAlias()
Он возвращает то, что вы сами же задали с помощью $.as("login button")
.
В обычных тестах этот метод не должен быть нужен. Но может понадобиться, если вы пилите какой-то свой хитрый отчёт.
Ну мало ли, убийцу Аллюра…
Добавили события “refresh” и т.п. в селенидовский лог
В селениде есть целый ряд методов, которые не связаны явно в веб-элементами (refresh()
, back()
и т.п.)
И мы в какой-то момент обнаружили, что некоторые из них не отображались в отчёта Selenide или Allure.
Несмертельно, конечно, но всё-таки зачем-то ведь эти отчёты кому-то нужны…
Теперь мы исправили эту оплошность, и следующие методы будут исправно красоваться в отчётах:
refresh
back
forward
updateHash
confirm
dismiss
prompt
clearCookies
См. issue 1383 и PR 1404.
Добавили аннотаций @Nullable
методам класса WebDriverRunner
Самым важным, по-видимому, тут является метод WebDriverRunner.getSelenideProxy()
- не было очевидно,
что он может возвращать null
, если прокси не запущен.
Теперь такая ошибка будет подсвечиваться в IDE жёлтеньким.
См. коммит.
Починили тесты селенида на не-англоязычных машинах
Оказалось, что парочка собственных тестов селенида падали, если их запустить на машине, на которой системным языком был выбран не английский, а скажем, французкий или испанский. Оказывается, в этих странах иначе форматируют Duration.
Теперь тесты исправлены, и по идее такое больше не может повториться.
Спасибо Vicente Rossello Jaume за PR 1408.
Статистика
Свежая статистика по скачкам Селенида:

Традиции
Ну вот и всё на сегодня.
Вы обновляйтесь, а я пока пойду найду стопки водки и бутерброд с килькой. Традиция, ничего не поделаешь.
ru.selenide.org
24.02.21