web-dev-qa-db-fra.com

Comment puis-je voir quelle capybara se trouve dans une étape de concombre défaillante?

J'ai commencé à migrer de concombre + webrat vers concombre + capybara. Maintenant, le comportement de "Je devrais voir" semble être quelque peu différent. La plupart d’entre elles échouent maintenant, bien que je n’ai rien changé à la page. J'ai remplacé l'extrait de code qui devrait être trouvé avec des éléments qui figurent sur chaque page. Pour un texte donné, cela fonctionne et pour d'autres textes, cela ne fonctionne pas. Je ne trouve aucun motif dans ce qui se trouve dans le contenu de la page et dans ce qui ne l'est pas…. Webrat avait l'habitude d'imprimer le contenu de la page trouvé, au cas où il ne contiendrait pas la phrase requise. Est-il possible de demander à capybara d'indiquer le texte obtenu à partir de la page dans laquelle il a essayé de trouver le texte?

44
ajmurmann

Essayez d'ajouter cette étape:

Then show me the page
32
marcgg

Then show me the page appelle la méthode save_and_open_page sous-jacente de webrat/capybara. J'ai trouvé cela utile lorsque vous travaillez avec un steak.

40
sent-hil

Si vous souhaitez que le navigateur ouvre la page en cas d'échec de la page, utilisez la gem 'launchy' Ajoutez-la à votre fichier gem, puis dans/features/support, créez un fichier appelé debugging.rb avec le contenu suivant:

After do |scenario|
   save_and_open_page if scenario.failed?
end
23
jacklin

Si vous utilisez JavaScript ou Ajax dans vos pages et souhaitez savoir ce qui se passe, j'ai constaté que le pilote Poltergeist est très efficace pour vous permettre d'entrer dans le DOM et de découvrir ce qui ne va pas.

Si vous configurez votre pilote Capybara avec l'option de débogage distant:

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, inspector: true)
end

Vous pouvez ensuite mettre la ligne suivante dans vos étapes: 

page.driver.debug 

Ce qui déclenche un nouveau navigateur Chromium avec le jeu d’état actuel du DOM, vous permettant ainsi d’accéder à la console. (Sur ma version de Linux, je devais faire un lien symbolique chrome vers chrome-navigateur, mais cela fonctionnait très bien). 

Informations sur la source: http://jonathanleighton.com/articles/2012/poltergeist-0-6-0/

9
Dan Garland

Then show me the response n'a pas fonctionné pour moi avec concombre 1.1. J'ai trouvé utile d'écrire une étape en utilisant la commande de capybara:

print page.html

Ceci sort l'état actuel du DOM

8
joscas

Vous pouvez également utiliser "Puis affichez-moi la réponse" pour afficher le code HTML dans la console si vous ne souhaitez pas utiliser de navigateur.

7
kinet

Vous pouvez toujours le faire prendre une capture d'écran lorsque quelque chose a échoué. Je débogue BEAUCOUP de fonctionnalités défaillantes de cette façon.

0
Whitney Imura