t.me/atinfo_chat Telegram группа по автоматизации тестирования

Ошибка Unauthorized при попытке скачать файл

locators
exceptions
java
selenide
webdriver
Теги: #<Tag:0x00007fb2fa457748> #<Tag:0x00007fb2fa457590> #<Tag:0x00007fb2fa457450> #<Tag:0x00007fb2fa457270> #<Tag:0x00007fb2fa457130>

(Таня) #1

Пытаюсь скачать файл с помощью $(By.xpath("//a[@href]").download() - и получаю ошибку Failed to download file ... 401 Unauthorized
На сайте конечно к этому моменту уже была авторизация. Так что значит эта ошибка тогда? и как ее обойти?
версия selenide 5.2.0


(Alexandr D.) #2

Таня, чтобы скачивать по данной ссылке, нужна авторизация.
Она бывает разная.
Basic или токены, например, или вообще кастомная.
Это значит что обращаясь к этой ссылке нужно передавать корректный заголовок Authorization.


(Таня) #3

А как передавать заголовок Authorization? Я думала $().download() сам это делает))


(Alexandr D.) #4

К сожалению, я не знаком с Selenide, но думаю что те, кто его используют Вам помогут в данном вопросе.


(Valentin G ) #5

А если просто кликнуть по этой ссылке, то файл скачивается? Не используя download функцию?


(asolntsev) #6

Да, метод $("a").download() должен использовать существующую авторизацию при скачивании. В теории.
На практике он выполняет HTTP запрос на URL, полученный из атрибута “href” ссылки. И передаёт ему все куки + заголовок “UserAgent” из открытого браузера. В большинстве случаев этого хватает, но вдруг у вас какая-то суперхитрая проверка на авторизацию…


(Таня) #7

да. просто клик - скачивается. но запускается все это на удаленной машине, и скачивается файл туда. а хотелось бы его потом еще проверить


(Таня) #8

а может быть что userAgent не передался? и как его тогда самой добавить?


(Alexandr D.) #9

Вы можете скачивать файл в какую-нибудь расшаренную папку/фтп, а с другой машины уже проверять скачанный файл.

Вы же пытаетесь скачать файл через браузер, насколько я понимаю, запущенный на удаленной машине.
Он не может физически просто так взять и сохранить файл к Вам на компьютер (ведь он запущен не на вашей машине), только если Вы укажете ему папку, куда надо сохранять файлы, и эта папка будет доступна с компьютера, где он запущен.


(asolntsev) #10

Вряд ли. userAgent наверняка передаётся.
Вам лучше посмотреть логи приложения: там где-то должна быть причина, почему оно отвечает 401 Unauthorized на ваш запрос.


(Valentin G ) #11

Если вам нужен этот файл для мануальной проверки, то как вариант, если вы знаете, куда он сохраняется, то вы можете его приаттачить к отчету, и смотреть потом уже.