Пытаюсь скачать файл с помощью $(By.xpath("//a[@href]").download()
- и получаю ошибку Failed to download file ... 401 Unauthorized
На сайте конечно к этому моменту уже была авторизация. Так что значит эта ошибка тогда? и как ее обойти?
версия selenide 5.2.0
Таня, чтобы скачивать по данной ссылке, нужна авторизация.
Она бывает разная.
Basic или токены, например, или вообще кастомная.
Это значит что обращаясь к этой ссылке нужно передавать корректный заголовок Authorization.
А как передавать заголовок Authorization? Я думала $().download()
сам это делает))
К сожалению, я не знаком с Selenide
, но думаю что те, кто его используют Вам помогут в данном вопросе.
А если просто кликнуть по этой ссылке, то файл скачивается? Не используя download
функцию?
Да, метод $("a").download()
должен использовать существующую авторизацию при скачивании. В теории.
На практике он выполняет HTTP запрос на URL, полученный из атрибута “href” ссылки. И передаёт ему все куки + заголовок “UserAgent” из открытого браузера. В большинстве случаев этого хватает, но вдруг у вас какая-то суперхитрая проверка на авторизацию…
да. просто клик - скачивается. но запускается все это на удаленной машине, и скачивается файл туда. а хотелось бы его потом еще проверить
а может быть что userAgent не передался? и как его тогда самой добавить?
Вы можете скачивать файл в какую-нибудь расшаренную папку/фтп, а с другой машины уже проверять скачанный файл.
Вы же пытаетесь скачать файл через браузер, насколько я понимаю, запущенный на удаленной машине.
Он не может физически просто так взять и сохранить файл к Вам на компьютер (ведь он запущен не на вашей машине), только если Вы укажете ему папку, куда надо сохранять файлы, и эта папка будет доступна с компьютера, где он запущен.
Вряд ли. userAgent
наверняка передаётся.
Вам лучше посмотреть логи приложения: там где-то должна быть причина, почему оно отвечает 401 Unauthorized
на ваш запрос.
Если вам нужен этот файл для мануальной проверки, то как вариант, если вы знаете, куда он сохраняется, то вы можете его приаттачить к отчету, и смотреть потом уже.