【问题标题】:Cache is not initialized, cannot RetrieveEntry error for Selenium/ChromeDriver when I click Download Link缓存未初始化,单击下载链接时无法检索 Selenium/ChromeDriver 错误
【发布时间】:2018-09-11 17:36:10
【问题描述】:

我在尝试单击 headless chrome 中的下载链接时出现错误,但出现以下错误。

ERROR:in_progress_cache_impl.cc(191)] 缓存未初始化。不能 检索条目。

每次点击下载链接时都会发生上述情况。

当我没有以无头方式运行时,代码运行良好

当我以--headless 运行时还会出现其他错误,它们在下面不确定是否相关:

[0911/115517.146:INFO:CONSOLE(0)] "内容安全策略 'default-src'self';style-src'self''unsafe-inline';script-src'self' '不安全的内联';'以仅报告模式交付,但不 指定一个'report-uri';该政策将无效。请要么 添加“report-uri”指令,或通过 'Content-Security-Policy' 标头。”存储 (0)

[0911/115517.620:INFO:CONSOLE(64)] "[仅报告] 拒绝评估 字符串作为 JavaScript,因为 'unsafe-eval' 不是允许的来源 以下内容安全策略指令中的脚本: "script-src 'self' 'unsafe-inline'"。

有什么想法吗?使用最新版本的 ChromeDriver、Python 3.7、最新的 Selenium 模块。当我以无头方式运行并一直到应该单击下载链接并将文件放入下载路径的地步时,代码就不起作用了。在非无头镀铬上工作正常

【问题讨论】:

    标签: python selenium web-scraping webdriver selenium-chromedriver


    【解决方案1】:

    找到了解决方案。本质上,您需要这样做构建 ChromeDriver:

    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}}
        command_result = driver.execute("send_command", params)
    

    完整的细节可以在以下线程中找到:

    https://bugs.chromium.org/p/chromium/issues/detail?id=696481

    https://bugs.chromium.org/p/chromedriver/issues/detail?id=2454

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多