Чёртов февраль.
Чтобы хоть как-то отвлечься, попробуйте обновиться на Selenide 7.2.0:
- Скачиваем файлы из Selenium Grid
- Скачиваем файлы удалённо с помощью CDP
- Коллекции элементов для мобилок
- Выключили предупреждение хрома про покраденные пароли
- Сообщение об ошибке, если нет href
- Обновили Selenium с 4.17.0 на 4.18.1
Скачиваем файлы из Selenium Grid
Наконец-то!
Теперь вы можете скачивать файлы методом FOLDER
и из Selenium Grid.
До сих пор FOLDER
работал только при локальном запуске и в Selenoid.
Если вы гоняете браузеры на Selenium Grid и хотите в тестах скачивать файлы методом FOLDER
, вам просто нужно будет поменять зависимость
com.codeborne:selenide:7.1.0
на
com.codeborne:selenide-grid:7.2.0
И как бы в общем-то всё.
Configuration.remote = "https://qa.grid.my.com:4444/wd/hub";
Configuration.fileDownload = FOLDER;
File quotes = $("#quotes").download(withExtension("txt"));
assertThat(quotes.content()).contains(
"Любовь сильнее страха",
"Стыдно не делать ничего. Стыдно дать себя запугать.");
См. issue 1687, PR 2659 и PR 2660.
Скачиваем файлы удалённо с помощью CDP
В предыдущем релизе мы добавили новый метод скачивания файлов CDP, но работал он только локально.
Теперь он также работает с удалёнными браузерами на Selenoid и Selenium Grid.
Configuration.remote = "https://cloud.browsers.my.com:4444/wd/hub";
Configuration.fileDownload = CDP;
File places = $("#places").download(withExtension("csv"));
assertThat(places.content()).contains("Утоли моя печали", "Борисовское");
См. issue 1687, issue 2550 и PR 2661.
Коллекции элементов для мобилок
Мы навалили полезняшек для автотестов мобильных приложений. Появились новые методы для коллекций:
SelenideAppium.$$(By)
SelenideAppium.$$(Collection<WebElement>)
Оба возвращают объект SelenideAppiumCollection
.
По сути это то же самое, что старый добрый ElementsCollection
, только с объектами SelenideAppiumElement
вместо SelenideElement
.
SelenideAppiumCollection poetry = $$(By.xpath("//android.widget.EditText")).shouldHave(size(2));
poetry.get(0).scroll(up()).setValue("и в небо сорвутся тромбы");
poetry.get(1).scroll(down()).setValue("багровых кремлёвских башен");
Также добавили метод SelenideAppium.$(WebElement webElement)
, но вряд ли это вам пригодится.
См. issue 2333 и PR 2656.
Выключили предупреждение хрома про покраденные пароли
После обновления хрома начал выскакивать этот мешающий диалог “ваши пароли покрадены”. Кажется логичным, что в тестах он никому не нужен.
И хотя это выглядит скорее как бага Chrome 122, мы на всякий случай его по-быстрому вырубили.
См. issue 2658 и PR 2662.
Сообщение об ошибке, если нет href
Меня внезапно осенило, почему так много людей мучаются с настройкой прокси и даже не догадываются, что в селениде
есть и другие способы скачивания файлов: FOLDER
и CDP
(которые проще в использовании, а теперь
ещё и полноценно работают с удалёнными браузерами).
Возможно, проблема в коммуникации. Все эти годы метод $.download()
кидал вот такую ошибку:
The element does not have href attribute: <a id="generate-report">
После этого люди гуглили первую попавшуюся статью 5-летней
давности, в которой, конечно, упоминалась только одна альтернатива - PROXY
. И ломились изучать прокси.
Теперь сообщение об ошибке будет подсказывать, что методов несколько:
The element does not have "href" attribute: <a id="generate-report">, so method HTTPGET cannot download the file.
Please try another download method: FOLDER, CDP or PROXY.
Read more about possible download methods: https://selenide.org/javadoc/current/com/codeborne/selenide/FileDownloadMode.html
Правда, боюсь, это не поможет, потому что кто же их читает-то…
См. PR 2653.
Обновили Selenium с 4.17.0 на 4.18.1
См. ченджлог Selenium и PR 2655.
Будем надеяться на весну.
Не сдавайтесь.
Не унывайте и не опускайте руки.
Автоматизация тестирования — это не спринт, а долгий тяжёлый марафон.
ru.selenide.org
27.02.24