首页 > 解决方案 > 在无头 Chrome 中调试

问题描述

从 切换capybara_webkit到后headless_chrome,我试图找到一种方法来复制

Capybara::Webkit.configure do |config|
  config.debug = true
end

或者

Capybara.javascript_driver = :webkit_debug

与新司机。目标是能够看到运行时发生的所有事情的日志rspec my_spec.rb:例如,所有GET requests

有没有办法做到这一点?

标签: rubytestingrspeccapybaraheadless

解决方案


使用 Selenium 时没有选项,例如capybara_webkit实时输出调试信息的调试选项,但是您可以访问Chrome日志并在每次测试结束时输出这些日志(或者您可以编写一个帮助程序以在调用时输出它们当然)。

首先,您需要配置硒驱动程序以进行日志记录

Capybara.register_driver :logging_chrome do |app|
  caps = Selenium::WebDriver::Remote::Capabilities.chrome(
    # customize this based on which and what level logs your prefer
    loggingPrefs: { 
      browser: 'ALL',
      driver: 'ALL',
      performance: 'ALL'
    }
  )
  browser_options = ::Selenium::WebDriver::Chrome::Options.new()
  browser_options.headless!
  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    desired_capabilities: caps,
    options: browser_options
  )
end

然后你就可以使用那个驱动了

Capybara.javascript_driver = :logging_chrome # possibly default_driver = depending on your config

然后添加一个获取日志并显示它们的后块

after(:each) do
  # customize based on which type of logs you want displayed
  log_types = page.driver.browser.manage.logs.available_types
  log_types.each do |t|
     puts t.to_s + ": " + page.driver.browser.manage.logs.get(t).join("\n")
  end
end

推荐阅读