我在 Cromedrive 中以“正常”模式编写代码并且工作正常。当我更改为无头模式时,它不会下载文件。我已经尝试了我在互联网上找到的代码,但没有用。
chrome_options = Options()
chrome_options.add_argument("--headless")
self.driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'{}/chromedriver'.format(os.getcwd()))
self.driver.set_window_size(1024, 768)
self.driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': os.getcwd()}}
self.driver.execute("send_command", params)
任何人都知道如何解决这个问题?
PS:我不一定需要使用 Chomedrive。如果它在另一个驱动器上工作,那对我来说很好。
原文由 CBury 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先是解决方案
要在 本网站 中单击带有文本作为 下载数据 的元素来下载文件,您可以使用以下解决方案:
细节
通过 Headless Chromium 下载文件是自推出 Headless Chrome 以来最受欢迎的功能之一。
从那时起,不同的贡献者发布了不同的解决方法,其中一些是:
现在,好消息是 Chromium 团队正式宣布了 通过
Headless Chromium
下载文件 的功能的到来。在讨论 中 Headless mode doesn’t save file downloads @eseckler 提到:
详细讨论可以在 问题 696481 中找到:Headless 模式不保存文件下载
最后, @bugdroid 修订版似乎为我们解决了这个问题。
[ChromeDriver] 新增支持headless模式下载文件
这是 修订 和 提交
来自 ChromeDriver v77.0.3865.40 (2019-08-20) 发行说明:
解决方案
将 ChromeDriver 更新到最新 的 ChromeDriver v77.0 级别。
将 Chrome 更新到 Chrome 版本 77.0 级别。 (根据 ChromeDriver v76.0 发行说明)
注意: Chrome v77.0 尚未正式发布/推送,因此在此之前您可以从以下任一位置下载并安装开发版本和测试:
结局
然而, Mac OSX 用户需要等待他们的馅饼,因为 在 Chromedriver 上,headless chrome 在 MacOSX 上发送 Page.setDownloadBehavior 后崩溃。