设置默认下载目录和无头chrome

时间:2018-02-15 15:29:18

标签: ruby-on-rails ruby selenium selenium-chromedriver

我有一个rails应用程序,正在运行capybara&硒,并使用铬进行端到端测试。我想在运行chrome headless时设置默认下载目录。

以下是我在support / env.rb中设置的方法:

Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  'chromeOptions' =>  {
    'args' => %w(headless disable-gpu window-size=1920,1080),
    'prefs' => {
      'download.default_directory' => DownloadHelpers::PATH.to_s
    }
  }
)
Capybara::Selenium::Driver.new app,
  browser: :chrome,
  #args: ["--window-size=1024,768"], #UNCOMMENT TO HAVE BROWSER WINDOW POP UP
  desired_capabilities: capabilities
end

我注意到,如果我离开

'args' => %w(headless disable-gpu window-size=1920,1080)

然后设置默认下载目录,但是,浏览器会自动弹出,我要禁用它。

当我同时拥有时:

    'args' => %w(headless disable-gpu window-size=1920,1080),
'prefs' => {
  'download.default_directory' => DownloadHelpers::PATH.to_s
}

它无头运行,但未设置默认下载路径。

我有以下版本:

capybara(2.14.2)

selenium-webdriver(3.6.0)

chromedriver-helper(1.1.0)

2 个答案:

答案 0 :(得分:6)

我使用了https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c78

将我的设置更改为:

toupper

请注意,您必须输入自己的downloadPath。

答案 1 :(得分:0)

如果有人遇到这个问题,我尝试使用 user43395 的解决方案,但无法让它工作。然而,我终于发现了这个问题——在我的特殊情况下,下载目录需要有反斜杠而不是正斜杠。例如:

downloadPath: '/User/paulo/projects/app/tmp'

必须

downloadPath: '\\User\\paulo\\projects\\app\\tmp'

否则,他们答案中的其他所有内容都像魅力一样!我想把它放在这里,以防其他人一直在努力使其无法正常工作。