Вышла Selenide 5.6.1

Вышла Selenide 5.6.1

Прокси умнеет
14.01.20

Всех с Новым Годом!

Новый год - новый релиз. Встречайте 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.


Научили Selenide скачивать через прокси файлы без заголовка Content-Disposition

Как вы знаете, Selenide умеет скачивать файлы через свой прокси. Но при скачивании он перехватывал только те ответы сервера, в которых присутствует заголовок Content-Disposition (чтобы узнать оттуда имя скачиваемого файлы).

Как выяснилось, этот заголовок необязателен. Файлы могут скачиваться и без него.

Теперь селенидовский прокси стал умнее.

  1. Прежде чем скачать файл, он ждёт, пока закончатся все предыдущие запросы-ответы между браузером и сервером.
  2. Кликает кнопку скачивания
  3. Перехватывает ВСЕ запросы-ответы между браузером и сервером (вне зависимости от заголовков).
  4. И пытается понять, какой из них больше всего похож на скачивание файла.

А имя файла (в случае ответа без заголовка Content-Disposition) берётся просто из URL.

См. issue 1034 и PR 1035.


Исправили метод WebDriverRunner.using()

В октябре мы добавили метод using.
Судя по всему, вы ещё не успели его попробовать, потому что никто не пожаловался на багу: этот метод закрывал вебдрайвер после использования (хотя не должен). Ну вот, эту багу мы исправили.

См. коммит 4d1b19972d.


Обновились на WebDriverManager 3.8.0

там было исправлено несколько ошибок, в т.ч. моего авторства :)

См. changelog.
В частности, WDM теперь должен корректно работать без доступа в интернет.


Новости


Андрей Солнцев

ru.selenide.org

14.01.20