2012-11-26 41 views
8

अच्छी तरह से नहीं खेल रहे हैं, मैं PhantomJS ठीक से स्थापित है (मैं निम्नलिखित की तरह कोड चला सकते हैं और सही हथियाने यह काम करता है पूरी तरह से पृष्ठ के शीर्षक और एक सटीक स्क्रीनशॉट)रेल Phantomjs, poltergeist, और Capybara एक रेल 3.1.2 परियोजना (मैक ओएस एक्स) में काम करते हुए एक साथ

try_phantom.coffee बचत

page = require('webpage').create() 
page.open 'http://localhost:5000/parties/onetestparty', (status) -> 
    title = page.evaluate -> document.title 
    console.log "Title: #{title}" 
    page.render './log/javascript_screenshot.png' 
    phantom.exit() 

हालांकि, इस प्रकार जब मैं rspec में capybara/poltergeist उपयोग करने का प्रयास:

+०१२३५१६४१०६१

spec_helper.rb

require 'capybara/poltergeist' 
Capybara.javascript_driver = :poltergeist 

और फिर एक फोन की आवश्यकता होती है जावास्क्रिप्ट के साथ एक युक्ति का उपयोग करते हुए:

parties_spec.rb

 it "should allow a simple screenshot", js: true do 
      visit "/" 
      page.driver.render('./log/screen_Home.png', :full => true) 
     end 

यह प्रकट नहीं होता है कि मेरी जावास्क्रिप्ट है प्रस्तुत किया जा रहा है, और स्क्रीनशॉट हमेशा खाली है!

मैं डिबगर की कोशिश की है, लेकिन है कि मैं यकीन है कि समस्या या तो capybara और के बीच इंटरफेस है हूँ

(बस खाली सिर और शरीर टैग के साथ HTML) भी एक खाली HTML पृष्ठ को लाने के लिए लगता है poltergeist या (अधिक संभावना) poltergeist और phantomjs।

capybara 1.1.3
capybara-वेबकिट 0.13.0
poltergeist 1.0.2
phantomjs है कैसे करने के लिए सुनिश्चित 1.7.0

नहीं: यहाँ प्रासंगिक जवाहरात के संस्करण हैं आगे की समस्या निवारण ... किसी भी मदद की सराहना की जाएगी।

+0

नोट: एक चीज मैंने भी कोशिश की है पोल्टरजिस्ट को स्पष्ट रूप से कह रहा है कि मेरे प्रेतोज़ कहां मिल सकते हैं:: phantomjs => "/usr/local/Cellar/phantomjs/1.7.0/bin/phantomjs"। यह परिणाम नहीं बदलता है ... हालांकि, मुझे लगता है कि यह साबित करता है कि फैंटोम वास्तव में चल रहा है, क्योंकि अगर मैं इसे एक फर्जी पथ देता हूं, तो मुझे एक त्रुटि मिलती है। –

उत्तर

11

एक बहुत ही सरल परीक्षण बनाएं और देखें कि क्या होता है।

simple_spec.rb

require 'spec_helper' 
require 'capybara/poltergeist' 
include Capybara::DSL 
Capybara.javascript_driver = :poltergeist 

describe 'some stuff which requires js', :js => true do 
    it 'will take a screenshot' do 
    visit("http://google.com") 
    page.driver.render('./file.png', :full => true) 
    end 
end 

करता है आप गूगल की एक छवि प्राप्त है?

+0

हाँ, यह करता है ... असल में, मैंने पाया है कि अगर मैं रेल सर्वर छोड़ देता हूं "http: // localhost: 5000" पर जाने के लिए अपने उपरोक्त कोड को चलाएं और संशोधित करें, फिर यह वास्तव में उस पृष्ठ को ईमानदारी से प्रस्तुत करता है। हालांकि, जब मैं अपनी अन्य टेस्ट चश्मे में कैपिबरा :: डीएसएल शामिल करता हूं तो वे अलग-अलग स्थानों पर क्रैश हो रहे हैं ... अब समस्या निवारण। धन्यवाद!! –

+0

मैं इस उत्तर को सही के रूप में चिह्नित करने जा रहा हूं क्योंकि यह मुझे "आरएसपीईसी के भीतर से स्क्रीनशॉट नहीं बना सकता" के मुद्दे को पीछे छोड़ देता है। मुझे अभी भी कैपिबरा :: डीएसएल समस्या निवारण मिला है, लेकिन यह एक अलग मुद्दा है। धन्यवाद! –

2

शायद आप ड्राइवर को पंजीकृत करते हैं तो यह मदद करता है?

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, {debug: false}) 
end 
Capybara.current_driver = :poltergeist # NOTE THE CURRENT_DRIVER, NOT JAVASCRIPT_DRIVER! 
+0

महान सुझाव, लेकिन मैंने कोशिश की है (झूठी और सत्य दोनों को डीबग के साथ) और समस्या में कोई अंतर नहीं है। लगातार खाली स्क्रीन कैप्चर। –

+1

नींद 5 जोड़ने का प्रयास करें और फिर स्क्रीनशॉट बनाएं .. शायद इसे – Lichtamberg

+0

प्रदर्शित करने के लिए कुछ समय चाहिए, कोई और अच्छा सुझाव नहीं है, लेकिन इससे कोई फर्क नहीं पड़ता कि मैं कब तक सोता हूं, यह बस खाली हो जाता है। –

6

मुझे एक ही समस्या थी, लेकिन मेरे मामले में यह सबडोमेन का उपयोग करके हुआ था। Poltergeist अर्थहीन यूआरएल ("http://spb.:22789" की तरह) की ओर इशारा किया गया था, इसलिए इसे 'लगभग: खाली' के अलावा कुछ भी नहीं मिला। Capybara.app_host = 'http: //city.tulp.test: 3003' Capybara

के लिए

  1. सेट app_host और server_port:

    इस मुद्दे मैं निम्नलिखित किया था हल करने के लिए
    Capybara।server_port = 3003

  2. को/etc/hosts डमी डोमेन जोड़ें

आशा इस मदद करता है।

+0

मैं इसे आज़माउंगा और आपको बता दूंगा! धन्यवाद! –

+0

हम्म। वही परिणाम ... @Eugene मुझे लगता है कि आप अपनी LOCAL मशीन पर अपना .app_host सेट करते हैं? जहां परीक्षण सूट चल रहा है? –

+0

ओह .. मैंने अभी आपका प्रश्न देखा है, क्षमा करें। यदि यह अभी भी वास्तविक है - हाँ, स्थानीय मशीन पर परीक्षण चल रहे हैं, लेकिन आप अधिक सामान्य समाधान के रूप में http://lvh.me (जो हमेशा 127.0.0.1 को इंगित करते हैं) का उपयोग कर सकते हैं। – Eugene