使用Selenium在Python中进行Chrome无头文件下载

时间:2017-09-09 21:33:53

标签: python google-chrome selenium google-chrome-headless

在无头模式下,Chrome默认禁止文件下载。

但是,最近他们为DevTools添加了一个选项来启用此行为:

https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-setDownloadBehavior

在Python中使用Selenium和ChromeDriver,如何允许文件下载?

2 个答案:

答案 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   可下载的文件,文件应下载并保存在“下载”中   文件夹中。

     

反而会发生什么?

     

没有任何反应,文件无法下载。