闹鬼:phantomjs_logger 选项被忽略

Poltergeist: phantomjs_logger option ignored

在此设置中:

require 'capybara/poltergeist'
Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {
    phantomjs_options: ['--ignore-ssl-errors=yes', '--ssl-protocol=any', '--load-images=no'], debug: false, timeout: 500, screen_size: [1600, 1200], js_errors: false,.
    logger: File.open( Rails.root.join("./log/test.poltergeist.log").to_s, "a" ),
    phantomjs_logger: File.open( Rails.root.join("./log/test.phantomjs_console.log").to_s, "a" )
  })
end

Phantomjs 忽略 phantomjs_logger 选项并将应用程序输出到控制台的所有内容转储到 STDOUT,因此当 运行 我的规格时,我会看到一大堆垃圾。

我尝试过将 phantomjs_logger 设置为 Logger.new(...),设置为 File.open("/dev/null",...),但没有成功nil、false 和几乎所有你能想到的,它只是什么都不做。

理想情况下,我希望错误无法通过测试和其他 .info .log 任何刚刚通过管道传输到日志文件的消息。但我也可以接受将其全部发送到日志文件。

稍后编辑:似乎 chrome headless 也发生了这种情况。它只是将 console.log 转储到标准输出:(

我做错了什么?

在这上面浪费了几个小时后,我设法通过将日志打开到 $stdout 来让它工作。不确定为什么它不能按照文档工作,但是哦,好吧。

$stdout = File.open( Rails.root.join("./log/test.phantomjs_console.log").to_s )

require 'capybara/poltergeist'
Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {
    phantomjs: "/usr/local/bin/phantomjs", # '>> ./log/test.phantomjs_console.log 2>&1'
    phantomjs_options: [ '--ignore-ssl-errors=yes', '--ssl-protocol=any', '--load-images=no', '--debug=false' ], debug: false, timeout: 500, window_size: [1600, 1200], js_errors: false,.
    logger: File.open( Rails.root.join("./log/test.poltergeist.log").to_s, "a" ),
    phantomjs_logger: $stdout
  })
end

后期编辑:同时设法设置 chrome。闹鬼已经过时了。如果你 运行 进入这个 q/a 并且你试图让恶作剧者工作,停止并切换到 chrome。