正如更新中提到的,似乎有一種方法可以與Poltergeist(水豚驅動程序)做到這一點。這裏有一個快速和非常「的hackish」實驗:
require 'rubygems'
require 'capybara'
require 'capybara/poltergeist'
driver = Capybara::Poltergeist::Driver.new({})
port = Capybara::Poltergeist::Util.find_available_port
server = Capybara::Poltergeist::Server.new(port, 30)
client = Capybara::Poltergeist::Client.start(port,
:path => driver.options[:phantomjs],
:window_size => driver.options[:window_size],
:phantomjs_options => driver.phantomjs_options
)
browser = Capybara::Poltergeist::Browser.new(server, client, nil)
browser.visit('http://www.google.com/')
browser.network_traffic.each do |request|
# sorry, quick and dirty to see what we get:
request.response_parts.uniq(&:url).each do |response|
puts "#{response.url}: #{response.status}"
end
end
=>
http://www.google.com/: 200
http://ssl.gstatic.com/gb/images/b_8d5afc09.png: 200
http://www.google.com/images/srpr/logo1w.png: 200
http://www.google.com/images/srpr/nav_logo80.png: 200
http://www.google.com/xjs/_/js/hp/sb_he,pcc/rt=j/ver=FaiMBboaDLc.en_US./d=1/sv=1/rs=AItRSTMKxoHomLOW7ITf6OnfIEr5jQCEtA: 200
然而,這是非常慢,當然遠沒有什麼用。我正在計劃深入挖掘Poltergeist,可能會在較低層次上做同樣的事情。
輕微調整爲poltergeist 1.6.0: 'driver =水豚:: Poltergeist :: Driver.new({}) server =水豚:: Poltergeist :: Server.new(零,30) client =水豚:: Poltergeist :: Client.start(服務器, :path => driver.options [:phantomjs], :window_size => driver.options [:window_size], :phantomjs_options => driver.phantomjs_options ) –