在无头模式下,Chrome默认禁止文件下载。
但是,最近他们为DevTools添加了一个选项来启用此行为:
https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-setDownloadBehavior
在Python中使用Selenium和ChromeDriver,如何允许文件下载?
答案 0 :(得分:2)
对于那些仍在寻找的人,我就是这样做的:
def enable_download_in_headless_chrome( driver, download_dir):
#add missing support for chrome "send_command" to selenium webdriver
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
driver.execute("send_command", params)
答案 1 :(得分:-1)
以下是添加无头文件下载支持的chromedriver票证:https://bugs.chromium.org/p/chromedriver/issues/detail?id=1973
使用当前版本的无头时禁用文件下载 Chrome(#60)。版本#62添加了支持下载功能, 目前在Dev频道。需要ChromeDriver才能支持此功能 功能也是。
它还引用https://bugs.chromium.org/p/chromium/issues/detail?id=696481,其中包含该问题的复制步骤:
Chrome版本:Chromium 58.0.3023.0
哪些步骤会重现问题? (1)设置无头模式 命令行中的( - headless)(2)可下载文件的点URL(3) 没有任何事情发生
预期结果是什么?
以无头模式启动并指向带有的URL 可下载的文件,文件应下载并保存在“下载”中 文件夹中。
反而会发生什么?
没有任何反应,文件无法下载。