Вышла Selenide 3.9.1

Вышла Selenide 3.9.1

Скачивай файлы как мужыг
27.08.16

Привет!

Мы выпустили Selenide 3.9.1!



Киллер фича! Selenide умеет скачивать любые файлы! Откуда угодно.

Мы хотели сделать это давно, и вот наконец свершилось! Бесконечные проблемы со скачиванием файлов в селениуме ушли в прошлое. Теперь это легко. Всегда. Один простой метод на все случаи жизни:

File report = $("input#submit").download();

В Selenide метод download существует давно. Но до сих пор он умел скачивать файлы только по ссылке с атрибутом href: <a href.

Это было круто, но в некоторых случаях недостаточно. Например:

  • Клик по кнопке сабмитит форму, а в результате сабмита начинает скачиваться файл.
  • Клик по кнопке открывает PDF в новом табе (режим “inline” - встроенный просмотрщик PDF в браузере)

Теперь же Selenide умеет скачивать любые файлы. Для этого он использует встроенный proxy-сервер (а именно, BrowserMobProxy)

Как именно работает скачивание:

  1. Тест вызывает команду $("selector").download();
  2. Selenide активизирует прокси-сервер
  3. Selenide кликает элемент
  4. Прокси сервер запоминает все ответы сервера (response), которые содержат http-заголовок Content-Disposition. Из него Selenide достаёт имя файла и сохранят файл с таким именем в папке build/reports/tests.
  5. Selenide ждёт (до 4 секунд), пока в списке не появится хотя бы один файл
  6. Метод $.download() возвращает первый скачанный файл.
  7. Если за это время появились новые окна, Selenide закрывает всех их. Это нужно для тех случаев, когда PDF открывается в новом окне браузера.

См. issue #196 и pull request #267.

Огромное спасибо Дмитрию Демину за вклад в эту фичу, предложения и обсуждения!

Прокси-сервер

Да, теперь Selenide запускает свой прокси-сервер во время запуска тестов.

В будущем мы сможем использовать прокси-сервер для реализации многих других полезных возможностей. Например, проверять http статусы страниц и других ресурсов, внедрять свой код в страницы и пр.

Кидайте идеи, давайте побрейнстормим!

Предупреждение о слишком больших запросах и ответах

А вот и первое использование прокси-сервера (помимо скачивания файлов). Теперь Selenide отслеживает размер запросов-ответов и пишет предупреждение в лог, если размер какого-то реквеста или респонса превышает 2 MB.

Пока это экспериментальная фича. Расскажите, как она прижилась у вас. Обнаружили что-то полезное? Были ли проблемы?

См. issue #383

Теперь листенер SoftAsserts нормально работает с TestNG

Оказалось, TestNG конкретная редиска и вообще нехороший фреймворк. Если вы объявляете @Listeners(SoftAsserts.class) у одного класса, TestNG автоматически применяет его ко всем вашим классам. Нет, ну это надо было додуматься, а!

Мы нашли решение для этой проблемы. Теперь листенер SoftAsserts сам проверяет, объявлен ли он у текущего тестового класса (или его предка).

См. issue #384

Теперь аннотация SoftAsserts для TestNG игнорирует тесты с атрибутом “expectedExceptions”

Если у вас есть такой тест:

  @Listeners(SoftAsserts.class)
  public class MyTest {
    @Test
    public void myCheckA() {...}

    @Test(expectedExceptions = ...)
    public void myCheckB() {...}
  }

то очевидно, что SoftAsserts должны включаться в методе myCheckA, но не должны в методе myCheckB. Потому что он ожидает какую-то конкретную ошибку, и если SoftAsserts её спрячет, испортит всё дело.

См. issue #372

Исправили ошибку с basic auth в браузере IE

См. issue #366 и pull request #369

Спасибо Anton Aftakhov за этот pull request!

Обновились до библиотеки gson 2.7

Сам Selenium использует довольно старый gson 2.3.1, а в некоторых проектах бывает нужен более новый.


Новости



Обновляйтесь!

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

ru.selenide.org

27.08.16