将Apparition与Capybara配合使用时,browser_logger不会产生输出

时间:2019-10-01 15:07:23

标签: rspec capybara apparition

我正试图通过使用幻影术来摆脱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的输出混合在一起,但是绝对没有产生任何东西。

我的语法不正确吗?

谢谢, 肖恩

1 个答案:

答案 0 :(得分:0)

如果我这样做console.log("foo")在JavaScript中,我们的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>

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