Arbeiten in einem Rails 3.1.2 Projekt (Mac OS X), habe ich PhantomJS richtig installiert (Ich kann Code wie folgt und es funktioniert perfekt, präzise greifen der Titel der Seite und speichern eine genaue Screenshot)Rails Phantomjs, Poltergeist, und Capybara nicht gut zusammen spielen
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()
Allerdings, wenn ich capybara/Poltergeist zu verwenden, in rspec versuchen, wie folgt:
spec_helper.rb
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
und dann eine Spezifikation mit einem Aufruf erfordert javascript:
parties_spec.rb
it "should allow a simple screenshot", js: true do
visit "/"
page.driver.render('./log/screen_Home.png', :full => true)
end
Es scheint nicht, dass mein Javascript ist gerendert werden, und auch der Screenshot ist immer leer!
Ich habe den Debugger versucht, aber das scheint auch eine leere HTML-Seite zu bringen (nur mit leeren Kopf und Körper-Tags html)
Ich bin mir ziemlich sicher, dass das Problem ist, entweder die Schnittstelle zwischen Capybara und Poltergeist oder (wahrscheinlicher) Poltergeist und Phantomjs. Hier sind die Versionen der entsprechenden Edelsteine:
Capybara 1.1.3
Capybara-webkit 0.13.0
Poltergeist 1.0.2
PhantomJS ist 1.7.0
nicht sicher, wie man weitere Fehler beheben ... Jede Hilfe wäre willkommen.
Hinweis: Eine Sache, die ich auch versucht habe, ist Poltergeist explizit zu sagen, wo meine phantomjs gefunden werden können:: phantomjs => "/usr/local/Cellar/phantomjs/1.7.0/bin/phantomjs". Das ändert nicht das Ergebnis ... Ich denke jedoch, es beweist, dass Phantomjs tatsächlich ausgeführt wird, denn wenn ich einen falschen Pfad gebe, erhalte ich einen Fehler. –