2013-02-22 1 views
2

J'utilise RSpec et Capybara pour les tests Ruby on Rails.Comment cibler un bouton localisé avec RSpec et Capybara?

L'application My Rails est localisée pour un certain nombre de langues différentes (anglais, allemand, etc.).

Par exemple, je voudrais Capybara de soumettre un formulaire, mais ne peut évidemment pas utiliser sa valeur pour le sélectionner parce que les changements de valeur en fonction de la langue qui a été choisie.

Cela ne fonctionnera pas dans mon cas:

click_button("Create my account") 

Est-il possible de sélectionner simplement le premier élément input[type="submit"] sur la page avec Capybara?

Merci pour toute aide.

+0

BTW: L'utilisation d'un ID est la voie à suivre ... Mais, la fonctionnalité tester normalement de cliquer sur un bouton ne devrait pas être affectée par localisation différente. Je crée toujours des tests sur l'étiquette locale par défaut ... 'en' dans mon cas. –

Répondre

7

Je dirais:

find('input[type="submit"]').first.click 

mais lui donne une classe ou d'une carte d'identité, il est beaucoup plus sûr.

+0

Merci. Je ne pouvais pas obtenir ce travail et j'ai fini par utiliser un identifiant. – Tintin81

+0

@ Tintin81 la version de travail est en fait 'find ('input [type = "submit"]'). Click' ou encore en utilisant la même approche que ci-dessus' tous ('input [type = "submit"]'). Tout d'abord. cliquez sur – luopio

0

façon simple:

first('input[type="submit"]').click 
0

Vous pouvez aussi restreindre @ réponse de apneadiving à l'aide de sélecteurs CSS :

find ("# mon_form input [type = 'submit']"). Cliquez sur

De cette façon, vous n'avez pas besoin de modifier le code HTML pour correspondre à vos tests.

Questions connexes