Вышла Selenide 5.19.0

Вышла Selenide 5.19.0

День независимости
24.02.21

Всем привет!

Вы, наверное, не знали, но сегодня, 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"). В обычных тестах этот метод не должен быть нужен. Но может понадобиться, если вы пилите какой-то свой хитрый отчёт. Ну мало ли, убийцу Аллюра…

Спасибо pavelpp за PR 1415.


Добавили события “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