我從幻影獲取空白文檔。我正嘗試使用Capybara和Poltergeist爲水豚設置phantomjs驅動程序。水豚,poltergeist和phantomjs和在身體中給出一個空的響應
我按如下方式創建了一個模塊,並將其包含在使用需要連接的文件中。
require 'capybara/poltergeist'
module Parser
module JSParser
include Capybara
# Create a new PhantomJS session in Capybara
def new_session
# Register PhantomJS (aka poltergeist) as the driver to use
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, :debug => true)
end
# Use XPath as the default selector for the find method
Capybara.default_selector = :xpath
Capybara.javascript_driver = :poltergeist
Capybara.current_driver = :poltergeist
# Start up a new thread
@session = Capybara::Session.new(:poltergeist)
# Report using a particular user agent
@session.driver.headers = { 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X)' }
# Return the driver's session
@session
end
# Returns the current session's page
def html
@session.html
end
end
end
然後,加載頁面如下:
class Loader
include Parser::JSParser
def load_page
new_session
visit "http://www.smashingmagazine.com"
#let phantomjs take its time
sleep 5
puts "html=#{html}"
end
end
然後,最後,調用load_page
Loader.new.load_page
這裏是騷靈
poltergeist [1364758785355] state default -> loading
{"response"=>true}
{"name"=>"visit", "args"=>["http://www.smashingmagazine.com"]}
poltergeist [1364758794574] state loading -> default
{"response"=>{"status"=>"success"}}
{"name"=>"body", "args"=>[]}
{"response"=>"<html><head></head><body></body></html>"}
調試響應正如你所看到的那樣e響應只是一個空白的文檔,只有html,head和body標籤,但沒有任何標籤。
我在做什麼錯?觀察網絡流量,我得到了主機的全面響應(在這種情況下是smashingmagazine.com)。它的迴應後,我不知道發生了什麼。有時幻影也會崩潰,在其他場合,它會通過空的身體。這裏是STDERR上打印時phantomjs崩潰
PhantomJS client died while processing {"name":"visit","args":["http://www.smashingmagazine.com"]}
感謝您的支持。 「--ssl-protocol = TLSv1」這個論點爲我解決了一個類似的空回答問題。 – Kirkman14
經過幾個小時來調試一個很少使用的功能,依賴於casper.js和phantomjs,我偶然發現了這個答案。幾個月前,我們已經升級了我們反向代理的安全性.... facepalm。當這種情況發生時,我無法相信幻影只會默默地失敗。謝謝!!! – AlexMA
過去8個小時我一直拉我的頭髮,非常感謝這些節省了我一天的選擇。歡呼! – Sephy