让Headless Chrome与Capybara合作

时间:2017-07-12 19:14:57

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

我有点陷入困境,我正在关注这个思想机器人教程,所有内容都“看起来”正确:https://robots.thoughtbot.com/headless-feature-specs-with-chrome

  • 我已验证我的Chrome是第59版
  • 我用brew来安装chromedriver,至少验证了它的2.3版

我的rails_helper文件(相关部分)如下所示:

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) }
  )

  Capybara::Selenium::Driver.new app,
    browser: :chrome,
    desired_capabilities: capabilities
end

Capybara.javascript_driver = :headless_chrome

使用chromedriver-helper宝石可以让我使用镀铬就好了,但它不会无头。此外,当我检查它时,我会在chrome上确认自动化测试使用的是没有--headless标志出现。

现在使用brew install chromedriver给我的是:

Selenium::WebDriver::Error::WebDriverError:
       unable to connect to chromedriver 127.0.0.1:9515

所以似乎有些东西......它似乎并不知道如何连接brew chromedriver版本..但是大多数教程似乎都没有说任何关于使用brew版本链接任何东西。

有什么想法吗? (我在Rails上运行4.1顺便说一句)

1 个答案:

答案 0 :(得分:4)

由于您使用brew安装chromedriver,因此您需要完全删除chromedriver-helper以及它已安装的所有二进制文件和存根。这是因为bundler将已安装的二进制文件/存根添加到brew安装的chromedriver版本之前的路径中,从而遮蔽它。你可以使用

bundle exec which chromedriver

找出运行测试时实际使用的chromedriver。如果它不是brew安装的那个(通常是/ usr / local / bin / chromedriver),那么继续删除它们直到它。