Rails de Phantomjs, lutin, et le Capybara ne joue pas bien ensemble
De travail dans un des rails 3.1.2 projet (mac OS X), j'ai PhantomJS installé correctement (je peux exécuter un code comme suit et il fonctionne parfaitement, précisément de saisir le titre de la page et l'enregistrement précis de la capture d'écran)
try_phantom.café
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()
Cependant, lorsque je tente de l'utiliser capybara/lutin dans rspec comme suit:
spec_helper.rb.rb
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
puis à l'aide d'un spec avec un appel exigeant javascript:
parties_spec.rb
it "should allow a simple screenshot", js: true do
visit "/"
page.driver.render('./log/screen_Home.png', :full => true)
end
Il n'apparaît pas que mon javascript est en cours de rendu, et aussi la capture d'écran est toujours blanc!!!
J'ai essayé de le débogueur, mais qui semble également afficher une page HTML vide (juste en html avec la tête vide et le corps des balises)
Je suis sûr que le problème est soit l'interface entre le capybara et poltergeist ou (plus probable), poltergeist et phantomjs. Voici les versions pertinentes des gemmes:
capybara 1.1.3
capybara-webkit 0.13.0
lutin 1.0.2
phantomjs est 1.7.0
Vous ne savez pas comment résoudre ce problème... Toute aide serait appréciée.
OriginalL'auteur Dave Collins | 2012-11-26
Vous devez vous connecter pour publier un commentaire.
Créer un très simple de tester et de voir ce qui se passe.
simple_spec.rb
N'est que vous obtenez une image de Google?
Je vais indiquer que cette réponse est correcte, car il m'a passé la question de la "impossible de faire une capture d'écran dans rspec". J'ai encore le Capybara::DSL de dépannage, mais qui est une question distincte. Merci!
OriginalL'auteur theSociableme
J'ai eu le même problème, mais dans mon cas, il a été causé par l'utilisation de sous-domaines. Lutin a été souligné sens url (sorte de "http://spb.:22789") donc, il ne reçoit rien, mais "about:blank".
Pour résoudre ce problème, je n'ai suivantes:
Ensemble app_host et server_port pour Capybara
Capybara.app_host = 'http://city.tulp.test:3003'
Capybara.server_port = 3003
Ajouter mannequin de domaine dans /etc/hosts
Espère que cette aide.
Hmmm. Même résultat... @Eugene je suis en supposant que vous définissez votre .app_host à votre machine LOCALE? D'où la suite de test est en cours d'exécution?
Oh.. j'ai juste remarqué votre question, désolé. Dans le cas où si c'est toujours d'actualité - oui, des tests sont en cours d'exécution sur l'ordinateur local, mais vous pouvez utiliser hvg.- moi (qui a toujours des points à l'adresse 127.0.0.1) comme de plus en plus commun de la solution.
OriginalL'auteur Eugene
Peut-être cela aide si vous vous inscrivez le pilote?
essayez d'ajouter du sommeil 5 et ensuite faire la capture d'écran.. peut-être il a besoin de quelque temps pour afficher
Une autre excellente suggestion, mais peu importe combien de temps je dors, il vient juste de vide.
Remarque: Il y a deux
r
pourcurrent_driver
Haha tellement drôle, après un an, j'ai essayé de résoudre le même problème.. et trouvé ma réponse ^^
OriginalL'auteur BvuRVKyUVlViVIc7