Я пытаюсь загрузить файл с селеном. Я искал все.
В разделе Как контролировать загрузку файлов с привязками Selenium Python в Chrome некоторые люди говорили, что это сработало. Но это не сработало для меня! Может, я что-то пропустил? Единственное, что отличает меня, это то, что моя страница автоматически загружала файл csv.
Изучив хром-коды, я добавил:
"safebrowsing_for_trusted_sources_enabled": False
Но все же идентификатор не работал.
options = Options()
options.add_argument("--disable-notifications")
options.add_argument('--no-sandbox')
options.add_experimental_option("prefs", {
"download.default_directory": "C:\\Users\\claudiu.ivanescu\\Downloads",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing_for_trusted_sources_enabled": False
})
options.add_argument('--disable-gpu')
options.add_argument('--disable-software-rasterizer')
options.add_argument('--headless')
Благодарим за поддержку
Если кому интересно, после 2 дней поиска :). Мне удается заставить это работать!
Я нашел ответ об отслеживании ошибок в этом комментарии: https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c86
Код, который я использовал:
def enable_download_headless(browser,download_dir):
browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd':'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
browser.execute("send_command", params)
if __name__ == '__main__':
options = Options()
options.add_argument("--disable-notifications")
options.add_argument('--no-sandbox')
options.add_argument('--verbose')
options.add_experimental_option("prefs", {
"download.default_directory": "C:\\tmp",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing_for_trusted_sources_enabled": False,
"safebrowsing.enabled": False
})
options.add_argument('--disable-gpu')
options.add_argument('--disable-software-rasterizer')
options.add_argument('--headless')
driver_path = "C:\\Users\\tmp\\chromedriver.exe"
driver = webdriver.Chrome(driver_path, chrome_options=options)
enable_download_headless(driver, "C:/tmp")
driver.get(url)
Может быть, в будущем кому-нибудь пригодится... Наверное, внутри полно бесполезных вещей, но еще не было времени что-либо менять :).