Добрый день.
Возможно ли настроить chrome profile, что бы файл, который закачивается при нажатии на кнопку - не закачивался? Тоесть запретить закачку файлов вообоще?
Спасибо.
А может просто использовать HEAD запрос к файлу, если сервер позволяет? В идеале HEAD запросы конечно должны быть запрещены из-за того что они добавляют дыру в безопасности, но это мало кто делает, так что возможно у вас есть шанс.
Я повангую немного - у вас очевидно есть какой-то download page при переходе на который закачка начинается автоматически?
У меня просто аналогичная ситуация, и я тупо забил. Качает и качает, просто в конце каждого джоба где это присутствует - запускаю клинап скрипт
Забить нельзя, так как проверяются дестяки страниц с автоматическим даунодом.
Ну тут либо использовать прокси и блокать все данлоад линки на ее уровне, либо пытаться заэксекутить джаваскрипт первее скрипта загрузки и подменять линку на пустую
Есть вариант с настройками Chromeprofile, но какие, я пока не разобрался.
@VitaliyKoryakov
для хрома в преференсы надо всего два параметра указать
profile.default_content_settings.popups 0
download.default_directory "/tmp/special_dir/"
если где-то эта директория уже установлена, то надо еще передать
download.directory_upgrade true
profile.default_content_settings.popups 0 - запрещает закачку файлов?
Тогда зачем указывать директорию для закачки?
Больше похоже на то, что дизейблит попап, спрашивающий про закачку?
В линуксе можно писать файлы в /dev/null . Подходит?
Нет, винда )
если винда, то
some.exe > NUL
profile.default_content_settings.popups запрещает показывать диалог, который спрашивает про закачку
С попапом понятно.
А вот тут не совсем понял, что вы имели в виду
Это была попытка ответить сразу на два комментария. На самом деле есть полукостыльный вариант, только что попробовал. Задал несуществующую папку для даунлоуда через download.default_directory, файл начал скачиваться, но выдал ошибку уже в менеджере загрузок. То есть с точки зрения самого сайта, загрузка инициализировалась. С точки зрения твоей логики, как я понял, это самый разумный вариант.
Не совсем подходит такой вариант…
Суть в том. что скрип проходит по страницам быстро, и проверяет всего 1 элемент. Если сайт загрузился быстро, и проверка поршла так же быстро - загрузка не успевает начатся, и загружается вторая страница и т д
Если же страница более тяжелая, то загрузка успевает начаться, и начинаются карусели.
Так вот что бы не было таких вот неоднозначностей, возник вопрос, а можно ли вообще удалить загрузку на уровне браузера в Вебдрайвере?
Вариант ждать загрузки файла для всех страниц - не подходит, так как затратный по времени. Тест будет пол часа проходить.
Если же не существует способа отключить загрузку файла, то будем думать что то другое.
Так, в случае, если выставить несуществующую директорию, загрузка начинается, и моментально же заканчивается, в чем минусы этого подхода?
А поделитесь кодом пжл.
Видимо что то не то делаю, так как .crdownload файлы все равно закачиваются в downloads
chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory": "/some/path"}
chromeOptions.add_experimental_option("prefs", prefs)
Я, к сожалению, пишу на js/webdriverio. Поэтому у меня это выглядит так (добавляю преф в capabilities):
client = webdriverio.remote({
desiredCapabilities: {
browserName: 'chrome',
'chromeOptions': {
'prefs': {
'download.default_directory': '/idontexist/',
'download.directory_upgrade': true,
'profile.default_content_settings.popups': 0
}
}
},
logLevel: 'silent'
});
я так понимаю, у тебя это должно быть как-то так (поправьте, кто немного больше в теме):
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("download.default_directory", "/idontexist/");
chromePrefs.put("download.directory_upgrade", true);
chromePrefs.put("profile.default_content_settings.popups", 0);
options.setExperimentalOptions("prefs", chromePrefs);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
PS не сразу заметил что у тебя питон, только когда отписался уже.
Хм, в общем сделал так
chrome_profile = webdriver.ChromeOptions()
profile = {"download.default_directory": "C:\SeleniumTests\SomeFolder",
"download.prompt_for_download": False,
}
chrome_profile.add_experimental_option("prefs", profile)
self.driver = webdriver.Chrome('chromedriver.exe', chrome_options=chrome_profile)
Эта гадина создает несуществующую папку, и скидывает туда весь хлам
https://space.zeo.net/g/2uojb
Создаются временные файлы.
Попробуй передать “NUL” вместо папки? или несуществующий диск, несуществующий путь, например “M:\blabla”. У, меня, к сожалению, в данный момент нет windows с развернутой рабочей средой на нем. В идеале он не сможет создать папку, в которой нет доступа (или не хватает прав, или сам путь просто не может существовать).
Да! Получилось.
Спасибо за советы.
Можно закрывать тему )