Делаю скачивание файла так: $(“a[href=‘link_to_file’”).download();
Проблема в том, что скачиваемый файл доступен по ссылке только авторизованному пользователю. В итоге скачивается не требуемый файл, а html страничка авторизации. Для выполнения теста используется докер-контейнер с браузером Chrome v.58.0 (Selenoid).
Подскажите, пожалуйста, как все-таки скачать нужный файл?
А вы в тесте авторизировались этим пользователем (перед тем, как вызвать метод download
)?
Дело в том, что селенидовский метод download
добавляет к запросу все cookie, которые есть в вебдрайвере. Так что для приложения это выглядит как авторизированный пользователь. В общем, должно работать.
Да, в тесте пользователь авторизован, так как до скачивания файла, успешно проходят шаги с действиями над другими элементами страницы. Расследование показало, что для успешного выполнения запроса требуется хэдер User-Agent
, а селенидовский метод download
к запросу его не добавляет.
Ну и да, все верно скачивание файлов работает , когда требуются лишь только куки для авторизации.
О, так что, считай, feature request. Нужно добавить в Selenide заголовок User-Agent.
Я завёл тикет на гитхабе: Add "User-Agent" header when downloading file · Issue #639 · selenide/selenide · GitHub
Большое спасибо!!! Будем ждать ) А пока вышли из ситуации переопределением executeHttpRequest
.