Всех с Новым Годом!
Новый год - новый релиз. Встречайте Selenide 5.6.1.
Selenide.executeAsyncScript()Нет такого человека, который ни разу не запускал бы метод Selenide.executeJavaScript(). JavaScript позволяет выйти на новый уровень сумрака в автоматизацации.
А теперь мы добавили ещё и метод Selenide.executeAsyncScript(). Правда, я плохо представляю, в каких случаях он может понадобится, но если кому надо - теперь он есть.
Обратите внимание, его использование сложнее, чем обычного executeJavaScript(). После исполнения асинхронного JS кода нужно вызвать callback с результатом. А callback нужно получить из последнего аргумента:
long value = (Long) Selenide.executeAsyncJavaScript(
"var callback = arguments[arguments.length - 1]; " +
"setTimeout(function() { " +
" // Вот тут любая асинхронная чертовщина: " +
" ... " +
" // и в конце возврат в селениум: " +
" callback(10);" +
"}, 5000);"
);
assertThat(value).isEqualTo(10);
См. issue 1030.
Спасибо Thierry Ygé за PR 1031.
Content-DispositionКак вы знаете, Selenide умеет скачивать файлы через свой прокси. Но при скачивании он перехватывал только те ответы сервера, в которых присутствует заголовок Content-Disposition (чтобы узнать оттуда имя скачиваемого файлы).
Как выяснилось, этот заголовок необязателен. Файлы могут скачиваться и без него.
Теперь селенидовский прокси стал умнее.
А имя файла (в случае ответа без заголовка Content-Disposition) берётся просто из URL.
См. issue 1034 и PR 1035.
WebDriverRunner.using()В октябре мы добавили метод using.
Судя по всему, вы ещё не успели его попробовать, потому что никто не пожаловался на багу: этот метод закрывал вебдрайвер после использования (хотя не должен). Ну вот, эту багу мы исправили.
См. коммит 4d1b19972d.
там было исправлено несколько ошибок, в т.ч. моего авторства :)
См. changelog.
В частности, WDM теперь должен корректно работать без доступа в интернет.