我正在玩 capybara /poltergeist 完美二人组,但我无法正确调试。
我正在测试一个简单的脚本:
logger = Logger.new "./log/who-scored-com.log"
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, js_errors: false,
debug: true,
logger: logger)
end
browser = Capybara.current_session
browser.visit 'https://www.whoscored.com/LiveScores'
browser.save_page 'page.html'
我期待脚本正常抓取页面并保存它,但页面为空并返回:
`Capybara::Poltergeist::StatusFailError: Capybara::Poltergeist::StatusFailError
from /home/vagrant/local/ruby-2.3.0/lib/ruby/gems/2.3.0/gems/poltergeist-1.9.0/lib/capybara/poltergeist/browser.rb:351:in `command'
from /home/vagrant/local/ruby-2.3.0/lib/ruby/gems/2.3.0/gems/poltergeist-1.9.0/lib/capybara/poltergeist/browser.rb:34:in `visit'`
现在,这并没有给我任何关于这个错误的信息。我捕获异常并打印它,它给了我:
"Request to 'https://www.whoscored.com/LiveScores' failed to reach server, check DNS and/or server status"
即使我不知道为什么地址不响应 capybara (任何提示都会很感激:))我不明白为什么配置中使用的
:debug
选项似乎没有给我任何信息 最佳答案
你有几个问题
Capybara.current_driver = :poltergeist
所以我不确定它是否真的使用了你在那里配置的驱动程序或以前定义的驱动程序(如果是的话,我预计 Logger 对象上会出现错误) debug: true
将在日志中添加针对poltergeist的调试,但是也有来自phantomjs的调试信息。这是通过将 phantomjs_options: ['--debug=true'], phantomjs_logger: <an IO object - again not a Logger object>
传递给驱动程序 关于ruby - 如何使用Capybara/Poltergeist正确调试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35844186/