2012-11-26 11 views
8

Bir rayda çalışma 3.1.2 proje (mac OS X), PhantomJS düzgün bir şekilde yüklendim (Aşağıdaki gibi kod çalıştırabilir ve kusursuz şekilde çalışıyor, doğru kapma Sayfanın başlığı veRaylar Phantomjs, poltergeist ve Capybara birlikte iyi çalmıyor

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() 

Ancak, ben RSpec içinde Kapibara/hortlak kullanmaya çalıştığınızda aşağıdaki gibi doğru bir ekran görüntüsü)

try_phantom.coffee tasarrufu:

Görüşme gerektiren javascript ile bir spec kullanılarak

spec_helper.rb

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

ve sonra:

parties_spec.rb

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

Benim javascript olduğunu görünmüyor işlenen ve aynı zamanda ekran görüntüsü her zaman boş!

Ben ayıklayıcısını denedim ama

(sadece boş kafa ve vücut etiketleri ile html) ben sorun Kapibara arasındaki arayüz ya eminim da boş bir HTML sayfası getirmek gibi görünüyor Poltergeist veya (daha muhtemel) poltergeist ve phantomjs.

Kapibara 1.1.3
Kapibara-webkit 0.13.0
Poltergeist 1.0.2
phantomjs nasıl emin 1.7.0

edilmedi: Burada ilgili taşlar sürümleridir Daha fazla sorun giderme ... Herhangi bir yardım takdir edilecektir.

+0

Not: Ayrıca denediğim bir şey de, phantom'larımın nerede bulunabileceğini açıkça belirtmek için poltergeist anlatmaktır:: phantomjs => "/usr/local/Cellar/phantomjs/1.7.0/bin/phantomjs". Bu, sonucu değiştirmez ... Ancak, sanırım phantomjs'ın gerçekten işe yaradığını kanıtlıyor, çünkü eğer sahte bir yol verirsem, bir hata alıyorum. –

cevap

11

Çok basit bir test oluşturun ve ne olduğunu görün.

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 

İşe Yarar Google'dan bir görüntü almak?

+0

Evet, öyle ... Aslında, bir rails sunucudan ayrılırsam onu ​​buldum. koşmak ve yukarıdaki kodu "http: // localhost: 5000" ziyaret etmek için değiştirin, o zaman gerçekten bu sayfa sadakatle yapar. Ancak, Capybara :: DSL'i diğer test özelliklerine eklediğimde, farklı konumlarda çöküyorlar ... Hemen sorun giderme. Teşekkürler!! –

+0

Bu cevabı doğru olarak işaretleyeceğim çünkü "rspec içinden bir ekran görüntüsü oluşturamıyorum" konusunu geçtim. Ben hala Capybara :: DSL sorun giderme var, ama bu ayrı bir konudur. Teşekkürler! –

2

Eğer sürücüyü kaydettirirseniz yardımcı olur mu?

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

Büyük öneri, ama ben (hata ayıklama ile hem yanlış hem de doğru) denedim ve sorunda fark yok. Sürekli boş ekran yakalama. –

+1

uyku 5 eklemeyi deneyin ve daha sonra ekran görüntüsünü yapın .. belki – Lichtamberg

+0

görüntülemek için biraz zamana ihtiyacım var Başka büyük bir öneri, ama ne kadar uzun uyuduğum önemli değil, sadece boş geliyor. –

6

Aynı sorun vardı ama benim durumumda alt alan adlarının kullanılması neden oldu. Poltergeist anlamsız url'e ("http://spb.:22789") işaret ediyordu, bu yüzden "about: blank" dan başka bir şey almıyordu. Capybara

için Capybara.app_host = 'http: //city.tulp.test: 3003'

  1. Seti app_host ve SERVER_PORT:

    bu aşağıdaki yaptım sorunu çözmek için
    Capybara.SERVER_PORT = 3003

  2. etc/hosts/için bu yardımcı olur

Umut kukla domain ekleyin.

+0

Bunu deneyeceğim ve size bildireceğim! Teşekkürler! –

+0

Hmmm. Aynı sonuç ... @Eugene .app_host öğenizi LOCAL makinenize ayarladığınız var mı? Test takımı nerede çalışıyor? –

+0

Oh .. Sorunu daha önce fark ettim, üzgünüm. Eğer hala geçerli ise - evet, testler yerel makinede çalışıyor, ancak daha yaygın bir çözüm olarak http://lvh.me (her zaman 127.0.0.1'e işaret ediyor) kullanabilirsiniz. – Eugene

İlgili konular