8

레일 3.1.2 프로젝트 (Mac OS X)에서 PhantomJS가 제대로 설치되었습니다 (다음과 같은 코드를 실행할 수 있습니다) 완벽하게을 정확히 잡아 당깁니다. 하여 페이지의 제목과Rails Phantomjs, poltergeist, Capybara가 잘 어울리지 않음

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에에 카피 바라/폴터 가이스트를 사용하려고 할 때 다음과 같이 정확한 스크린 샷)

try_phantom.coffee 저장 :

호출이 필요한 자바 스크립트와 스펙을 사용하여

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 

내 자바 스크립트임을 표시되지 않습니다 스크린 샷은 항상 공란입니다!

나는 디버거를 시도했지만,

를 (단지 빈 머리와 몸 태그를 HTML) 그게 내가 문제가 삐 사이의 인터페이스 중 하나입니다 확신도 빈 HTML 페이지를 표시 할 것 폴터 지스트 또는 (더 많은 가능성이있는) 폴터 지스트 및 팬텀.

카피 바라 1.1.3
카피 바라 - 웹킷 0.13.0
소리의 요정 1.0.2
phantomjs 방법을 확인 1.7.0

되지 않음 : 여기에 관련 보석의 버전은 추가 문제 해결 ... 어떤 도움을 주시면 감사하겠습니다.

+0

참고 : 필자가 시도한 한 가지는 내 phantomjs가 어디에서 발견 될 수 있는지 명확하게 알려주는 것입니다. : phantomjs => "/usr/local/Cellar/phantomjs/1.7.0/bin/phantomjs". 이것은 결과를 바꾸지 않습니다 ... 그러나 나는 그것이 가상의 경로를 제공하기 때문에, 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"을 방문하면 실제로 해당 페이지가 충실하게 렌더링됩니다. 그러나 Capybara :: DSL을 다른 테스트 사양에 추가하면 다른 위치에서 충돌이 발생합니다 ... 지금 문제 해결. 감사!! –

+0

"이 질문은"rspec에서 스크린 샷을 만들 수 없습니다 "라는 문제를 해결했기 때문에이 답을 올바르게 표시 할 것입니다. 나는 여전히 Capybara : : DSL 문제 해결을 가지고 있지만, 그것은 별개의 문제입니다. 감사! –

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

동일한 문제가 있었지만 제 경우에는 하위 도메인을 사용하여 발생했습니다. 심령술사는 무의미한 URL (일종의 "http://spb.:22789")을 지적 했으므로 'about : blank'이외의 것을 수신합니다. 카피 바라

에 대한 Capybara.app_host = '에 http : //city.tulp.test : 3003'

  1. 설정 app_host 및 SERVER_PORT :

    이 내가 다음 한 문제를 해결하기
    카피 바라를.SERVER_PORT는 = 3003

  2. 는 등/호스트 /이 도움이

희망 더미 도메인을 추가합니다.

+0

나는 이것을 밖으로 시도하고 알려 드리겠습니다! 감사! –

+0

흠. 같은 결과 ... @Eugene 나는 당신의 로컬 컴퓨터에 .app_host를 설정한다고 가정하고 있습니까? 테스트 스위트가 실행되는 곳은 어디입니까? –

+0

아 .. 네 질문에 유감이야, 미안. 경우에도 여전히 - 네, 테스트 로컬 컴퓨터에서 실행되고 있지만 더 일반적인 솔루션으로 http://lvh.me (항상 127.0.0.1 가리키는) 사용할 수 있습니다. – Eugene

관련 문제