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

Как загрузить файл с сайта и положить в нужное место на windows хосте?

Теги: #<Tag:0x00007f74843f0930> #<Tag:0x00007f74843f0840>

Предполагается работа на windows хосте, на него и нужно скриптом загрузить файл для дальнейшей обработки. Реализация предполагается на джаве с использыванием внешних библиотек. Сайт htpps, имеет базовую аутентификацию.
Спасибо)

1 Симпатия

Ну, если используется протокол https, то без разницы на чём он работает. А что значит загрузить файл? HTTP post? или в какой-то каталог положить?

В каталог. Чтобы понимать откуда его брать для установки.

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

А можно ближе к реализации, а то слишком абстрактно как-то)) допустим авторизацию и отключить можно, но остается вопрос закрузки в нужное место.

Как средствами selenium можно скачать файл со страницы?

Огромное спасибо, остался теперь вопрос, как средствами джава и вебдрайвера пройти базовую аутентификацию пользователя.

Указать логин и пароль в адресе.
https://user:password@example.com/

Уточнил, авторизация проходит через POST, к сожалению через урл не пройдет.

в теории:
средставами java сделать POST (http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/)
в ответ получить куки
куки скормить вебдрайверу

Не совсем понял ваш workflow. Вы спрашиваете, как скачать файл средствами драйвера… Но как это связано с POST аутентификацией? Скачка файла требует авторизации пользователя, но вы хотите закачать ее в обход UI?

Или задача вообще не связана с драйвером, и вам лишь нужно дернуть соответствующий сервис средствами Java, а затем прочитать байт стрим и записать в файл на диске?

Или вы хотите совместить проход по UI до места закачки (генерация файла на сервере), а затем скачать его средствами Java?

К слову, какая там у вас религия на стороне сервисов - soap или rest? Также следует понимать, нет ли там дополнительного handshake запроса перед непосредственной авторизацией. Вообще говоря, все эти моменты можно уточнить у ваших девелоперов. Наверняка у них уже есть тесты, покрывающие работу с файловым сервисом. Там же и сможете подсмотреть, как реализована аутентификация.

1 Симпатия

Вопрос решил. Все оказалось достаточно просто, много пробелов в знаниях просто, прилагаю шаблон решения:

public void downloadClientToURL() {

		try {
			URL url = new URL("https://......");

			String loginAndPassword = "login" + ":" + "password";

			String encoding = Base64.getEncoder().encodeToString(
					loginAndPassword.getBytes());

			HttpURLConnection connection = (HttpURLConnection) url
					.openConnection();
			connection.setRequestMethod("GET");
			connection.setDoOutput(true);
			connection.setRequestProperty("Authorization", "Basic " + encoding);

			InputStream content = (InputStream) connection.getInputStream();
			File file = new File("d:" + File.separator + "filename.exe");
			OutputStream out = new FileOutputStream(file);
			IOUtils.copy(content, out);
			content.close();
			out.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

Благодарю за подсказки)