Добро утро!
Мы выпустили Selenide 7.3.1.
Релиз небольшой, так что обновиться будет прям легко. Приступаем к распаковке:
- Мокать ответ сервера заданного типа
- Исправили метод
$.clear()
в мобилках - Исправили сообщение при клике на некорректную ссылку
- Отключили предупреждение Хрома про сворованные пароли
- Исправили загрузку файлов через CDP для кастомных вебдрайверов
- Задеприкейтили настройку
holdBrowserOpen
- Обновили Selenium с 4.19.1 до 4.20.0
- Статистика
Мокать ответ сервера заданного типа
Как вы помните, Селенид позволяет через прокси подменить ответ сервера:
getSelenideProxy().responseMocker().mockText("cik-mock",
urlStartsWith(GET, "https://cik.ru/api/gov/no/referendum"),
() -> "{votes: 2133326, for: 99.23, against: 0.77}");
Но при этом невозможно было задать тип контента (xml, json и т.п.). А иногда это важно.
Теперь можно задать любые заголовки для ответа сервера, в т.ч. Content-Type
:
import org.openqa.selenium.remote.http.HttpResponse;
getSelenideProxy().proxyMocker().mockResponse("cik-mock",
urlStartsWith(GET, "https://cik.ru/api/gov/no/referendum"), () -> new HttpResponse()
.setStatus(429)
.addHeader("Content-Type", "application/json")
.setContent(utf8String("{votes: 2133326, for: 99.23, against: 0.77}"))
);
См. issue 2705 и PR 2706.
Исправили метод $.clear()
в мобилках
… для элемента, который существует, но невидим.
Оказывается, что вызов clear
или click
в мобилках:
$("#hiddenElement").clear();
Падал с некорректным сообщением, если элемент найден, но невидим (например, перекрыт другим элементом):
Element should be interactable {By.name: ComputeSumButton}
Element: '<XCUIElementTypeButton ... visible="false">...
Caused by:
UnsupportedCommandException:
Unhandled endpoint: /session/28...13/element/07000000-0000-0000-CF35-000000000000/css/opacity ...
Теперь сообщение будем корректным, без всяких там UnsupportedCommandException
:
Element should be visible {By.name: ComputeSumButton}
См. issue 2722 и PR 2723.
Исправили сообщение при клике на некорректную ссылку
Похожая проблема. Если в Firefox попытаться кликнуть на некорректную ссылку (например, https://zopa
):
$("#invalid-link")
.shouldHave(attribute("href", "https://zopa"))
.click();
то Селенид выдавал некорректное сообщение об ошибке:
Element not found {#link}
Expected: clickable: interactable and enabled
Теперь будет честный текст ошибки:
WebDriverException: Reached error page: about:neterror?e=dnsNotFound&u=https%3A//zopa/
Build info: version: '4.20.0', revision: '866c76ca80'
P.S. Интересно, что такую ошибку выдаёт только Firefox. Остальные браузеры спокойно показывают стандартную страницу с текстом:
This site can’t be reached
Check if there is a typo in example.
DNS_PROBE_FINISHED_NXDOMAIN
См. issue 2725 и PR 2727.
Отключили предупреждение Хрома про сворованные пароли
Снова. Уже отключали в PR 2662, но
там мы добавили настройку profile.password_manager_enabled=false
, и этого оказалось мало. Теперь докинули ещё и настройку
profile.password_manager_leak_detection=false
.
См. PR 2729.
Исправили загрузку файлов через CDP для кастомных вебдрайверов
Как вы помните, несколько месяцев назад вы реализовали новый способ скачивания файлов через CDP. Работает он только в Chromium-based браузерах (Chrome, Edge etc.).
Но вот в случае кастомного вебдрайвера проверка “а хром ли это” не срабатывала:
Configuration.fileDownload = CDP;
Configuration.browser = MyCustomChromedriverFactory.class.getName();
File report = $("#report").download();
// летела ошибка: java.lang.IllegalArgumentException:
// The browser you selected "MyTest$CustomWebDriverProvider" doesn't have Chrome Devtools protocol functionality.
Теперь селенид правильно распознаёт Chromium-based браузеры по их реальным капабилитям. Обожаю это слово. :)
Спасибо Petr Ovcharenko за PR 2728.
Задеприкейтили настройку holdBrowserOpen
Есть такой флажок в Селениде - если его установить, то Селенид не будет закрывать браузер после прогона тестов. Иногда люди хотят оставить браузер открытым, чтобы после теста поковыряться в нём, что-то там поизучать и поотлаживать.
Лично мне никогда не нравилась эта фича, и я давно хотел её удалить. Но теперь появилась веская причина: внезапно мы осознали, что фича вредная. Когда вы поковыряетесь в браузере и закроете его руками, вебдрайвер-то никто уже не закроет, и он останется висеть в памяти и жрать ресурсы.
Поэтому вместо holdBrowserOpen
лучше напишите где-нибудь в своём тесте sleep(600_000)
и ковыряйтесь на здоровье.
Кто знает, почему именно 600 секунд? Олды тут?
См. PR 2730.
Обновили Selenium с 4.19.1 до 4.20.0
В ченджлоге Selenium, честно говоря, больших изменений не вижу. Ну разве что добавили поддержку CDP 124 и убрали 121.
См. PR 2726.
Статистика
Случилось!!!
Количество ежемесячных скачиваний Селенида перевалило за … миллион!
ru.selenide.org
28.04.24