当chromedriver处于无头模式时,无法下载文件。如何运作?

时间:2019-03-19 08:54:21

标签: selenium selenium-webdriver selenium-chromedriver headless headless-browser

在测试期间,将从Web应用程序下载文件(.html),我必须通过在浏览器中打开文件来验证该文件。在非无头模式下,我的测试工作正常。但是,每当我进入无头模式时,该文件都不会下载到下载路径(即指向“ user.dir”中的文件)。我的Chrome驱动程序版本为2.44.609538,硒版本为3.14。

4 个答案:

答案 0 :(得分:0)

显然这可以为您提供帮助

Shawn Button发布与之相关的答案。

Downloading with chrome headless and selenium

答案 1 :(得分:0)

Are you running the test from the command line?

Because, according to an answer to this question and this, when you run it via command line, your user.dir corresponds to your global user directory (C:\users\username).

答案 2 :(得分:0)

这对我们的ruby实现很有用:

Capybara.register_driver :scrapping_driver do |app|
      options = Selenium::WebDriver::Chrome::Options.new
      options.add_argument('--headless')
      options.add_argument('--disable-popup-blocking')
      options.add_argument('--disable-gpu')
      options.add_argument('--no-sandbox')
      options.add_argument('--disable-dev-shm-usage')
      options.add_argument('--window-size=1366,2000')
      options.add_preference(:download, directory_upgrade: true,
                                prompt_for_download: false,
                                default_directory: "#{Rails.root}/")
      options.add_preference(:browser, set_download_behavior: { behavior: 'allow' })
      Selenium::WebDriver::Service.driver_path = Webdrivers::Chromedriver.driver_path
      driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
    end

请注意下载行为

答案 3 :(得分:0)

我遇到了同样的情况。

无头模式非常快。所以你的代码可能会被实现来检测下载(DL)。

解决方案。

  1. (当前您的进程?).click for DL -> 检测下载文件生成。
  2. (我的解决方案)检测下载文件生成 -> .click for DL。

我使用回调函数实现了上述机制。