在无头Chrome中启用/查看console.log消息

时间:2019-10-16 16:53:20

标签: ruby-on-rails google-chrome selenium-webdriver capybara google-chrome-headless

我有一个使用Capybara,Selenium和chromedriver运行无头Chrome测试的Rails 5.2.3应用程序。我的测试运行良好,但似乎无法启用或查看任何输出到console.log的消息。这是我的设置:

宝石文件

ruby '2.6.5'

gem 'rails', '~> 5.2.3'

group :test do
  gem 'rspec-rails'
  gem 'capybara'

  gem 'selenium-webdriver'
  gem 'webdrivers'
end

spec_helper.rb

Capybara.register_driver :headless_chrome do |app|
  caps = Selenium::WebDriver::Remote::Capabilities.chrome loggingPrefs: {
    browser: 'ALL', client: 'ALL', driver: 'ALL', server: 'ALL'
  }

  opts = Selenium::WebDriver::Chrome::Options.new
  chrome_args = %w(--headless --window-size=1920,1080 --no-sandbox --disable-dev-shm-usage --enable-logging)
  chrome_args.each {|a| opts.add_argument a}

  Capybara::Selenium::Driver.new app, browser: :chrome, options: opts, desired_capabilities: caps
end

然后在我的任何测试中,如果我尝试检查日志(并且我知道我正在运行的代码中触发console.log消息),我什么也看不到:

page.driver.browser.manage.logs.get(:browser) # => []

那么,我做错了什么?我假设设置:headless_chrome驱动程序时缺少一些配置/日志记录设置,但这是什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

当Chrome默认更改为w3c模式(v75)时,它已将loggingPrefs更改为goog:loggingPrefs以符合规范。尝试改为设置goog:loggingPrefs