【问题标题】:Debug in headless Chrome在无头 Chrome 中调试
【发布时间】:2019-01-03 09:14:01
【问题描述】:

capybara_webkit切换到headless_chrome后,我正在尝试寻找复制的方法

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

Capybara.javascript_driver = :webkit_debug

使用新驱动程序。 目标是能够看到运行rspec my_spec.rb 时发生的所有事情的日志:例如,所有GET requests

有没有办法做到这一点?

【问题讨论】:

  • 'test' 环境中的服务器默认将日志写入test.log。要将日志打印到控制台,请阅读:stackoverflow.com/questions/11770552/…
  • 嘿@Leo 我没有使用Rails,所以我想这个解决方案行不通,对吗?
  • 是的,行不通。另外,在你的应用程序中,你写了一些日志?为什么这对 rspec 不起作用?
  • 规格独立于应用程序。

标签: ruby testing rspec capybara headless


【解决方案1】:

在使用 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

【讨论】:

    猜你喜欢
    • 2021-01-09
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2018-04-01
    • 2014-02-06
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多