首页 > 解决方案 > 将幻影与 Capybara 一起使用,browser_logger 不产生输出

问题描述

我试图通过使用幻影移离 Poltergeist/PhantomJS。

配置驱动程序按预期工作,除了 Chrome 日志的输出。

这是我的驱动程序配置:

Capybara.register_driver :apparition do |app|
    options = {
      debug: false,
      headless: true,
      browser_logger: STDOUT,
      timeout: 3,
      ignore_https_errors: true,
      screen_size: [1920, 1080],
      skip_image_loading: false,
      js_errors: false,
      headers: {
        "User-Agent" => "Apparition"
      }
    }
    Capybara::Apparition::Driver.new(app, options)
end

我希望看到 Chrome 的控制台输出与 Capybara 的混合在一起,但绝对没有产生任何东西。

我的语法不正确吗?

谢谢,肖恩

标签: rspeccapybaraapparition

解决方案


如果我console.log("foo")使用 JavaScript,我们的 Capybara + Apparition 测试将在运行期间输出。所以,是的,Capybara + Apparition 通常有这种行为。

尝试删除所有这些选项,看看你是怎么做的。

console.log这是一个输出内容的独立示例。将其另存为example.rb并使用ruby example.rb. (示例代码主要来自https://github.com/teamcapybara/capybara/issues/2256#issuecomment-542238546。)

require "bundler/inline"

gemfile do
  source "https://rubygems.org"
  gem "capybara"
  gem "puma"
  gem "apparition"
end

require "capybara/apparition"
require "capybara/dsl"

html = DATA.read
app = proc { |env| [200, { "Content-Type" => "text/html" }, [html] ] }

Capybara.register_driver :apparition do |app|
  Capybara::Apparition::Driver.new(app,
  )
end

sess = Capybara::Session.new(:apparition, app)
sess.visit("/")

__END__

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Hello!</title>
    <script>
      console.log("hi");
    </script>
  </head>
  <body>
    <p>Hello world.</p>
  </body>
</html>

但是,即使我添加了您使用的所有选项,此示例仍会输出日志,因此可能会发生其他事情。


推荐阅读