Вышла Selenide 5.14.0

Вышла Selenide 5.14.0

Стабильный FOLDER
17.08.20

Всем привет!

Мы выпустили релиз Selenide 5.14.0.

Стабилизировали новый способ скачивания файлов FOLDER

… который появился в Selenide 5.13.0.

Вот что поменялось в 5.14.0:

  1. Каждый раз, когда селенид открывает браузер, он создаёт для него уникальную папку для скачиваний. Это помогает избежать ситуаций, когда параллельные тесты одновременно скачивают файлы в одну и ту же папку, и невозможно понять, где чей файл.

    См. issue 1220 и PR 1221.

    • Увы, это не работает для IE и Safari (которые в принципе не позволяют задать папку для скачивания файлов)
    • Также это работает только для тех браузеров, которые открывает селенид.
    • Если же вы сами открываете браузер и передаёте его селениду, вам нужно будет создать уникальную папку самостоятельно и передать её селениду:
      • Либо с помощью нового метода setWebDriver(driver, proxy, downloadsFolder),
      • либо конструктора SelenideDriver(..., downloadsFolder).
  2. Перед началом каждого скачивания файла селенид очищает папку – см. PR 1252
  3. Селенид удаляет все пустые папки для скачиваний в конце тестов – см. PR 1247

Добавили проверку $$.shouldHave(itemWithText("any text"))

В отличие от классической $$.shouldHave(texts("text1", "text2")), она означает, что в коллекции есть хотя бы один элемент с данным текстом.

Спасибо Luis Serna за PR 1194.

Кстати, это первый коммит в селенид аж из Боливии!

Добавили поддержку браузера Safari

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

Как обычно, достаточно просто прописать

  1. Configuration.browser = "safari"; либо
  2. -Dselenide.browser=safari

Делитесь впечатлениями.

См. issue 1236 и PR 1237.

Добавили метод SelenideDriver.screenshot(fileName)

Полезно, если вы создаёте “нестатический” вариант драйвера (new SelenideDriver()) и хотите снимать скриншоты.
Теперь можно.

См. issue 1166 и PR 1227.

Добавили метод SelenideDriver.screenshot(OutputType)

Иногда хочется получить скриншот в формате Base64. Например, этот формат хотят некоторые инструменты для сравниения скриншотов.

Теперь их можно получить таким вызовом:

String screenshot = Selenide.screenshot(OutputType.BASE64);
byte[] decoded = Base64.getDecoder().decode(screenshot);
BufferedImage img = ImageIO.read(new ByteArrayInputStream(decoded));

См. issue 1224 и PR 1231.

Теперь селенид снимает скриншот в случае падения switchTo()

Как вы знаете, Селенид автоматически делает скриншот в случае падения тестов.
Но мы обнаружили, что Селенид НЕ делал скриншот, если упал один из этих методов:

  • switchTo(frame)
  • switchTo(window)
  • switchTo(alert)

Теперь мы исправили эту досадную оплошность.

См. issue 1190 и PR 1240.

Добавили хрому опцию --disable-dev-shm-usage

Мы тут вычитали, что без этой опции Chrome может крэшиться из-за out of memory error.

  1. Почему никто из вас на это не жаловался?
  2. Стало ли лучше после добавления это опции?

P.S. Позже люди жаловались и на наличие этой опции. Эпопея пока не окончена.

Исправили работу Sizzle селекторов на страницах с Dojo.js, troop.js и т.п.

См. issue 434 и PR 1242.

Сделали метод $.toString() безопаснее

См. issue 1241 и PR 1245.

Улучшили сообщение об ошибке, если элемент внезапно пропал

См. issue 1013 и PR 1239.

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

См. WDM Changelog.


Видеообзор

Смотрите видеообзор данного релиза.

Новости

И целая серия статей от Alexander Pushkarev:


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

ru.selenide.org

17.08.20