Comment puis-je vérifier qu'un champ de formulaire est pré-rempli correctement à l'aide de capybara?
J'ai un champ avec une bonne étiquette que je peux compléter avec capybara sans problème:
fill_in 'Your name', with: 'John'
J'aimerais vérifier la valeur qu'il a avant de le remplir et ne peut pas le comprendre.
Si je d'ajouter, après le fill_in
la ligne suivante:
find_field('Your name').should have_content('John')
Que le test échoue, bien que le remplissage juste avant travaillé comme je l'ai vérifié par la sauvegarde de la page.
Ce qui me manque?
InformationsquelleAutor Marc-André Lafortune | 2012-05-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un requête xpath pour vérifier si il y a un
input
élément avec une valeur particulière (par exemple, "John"):Voir http://www.w3schools.com/xpath/xpath_syntax.asp pour plus d'info.
Pour peut-être une belle façon:
EDIT: aujourd'Hui, je serais probablement utiliser have_selector
Si vous utilisez la page de l'objet modèle(vous devriez l'être!)
.value
peu. Merci!find_field
et d'autresNode::Finders
sont utilisés pour trouver des noeuds et effectuer des actions plutôt que celui de l'attente. Bien sûr, ce n'est pas une règle, mais pour quelque chose de simple comme cela se passe avec la fonction intégrée de solution, c'est une meilleure idée. Juste pour dire!assert has_xpath?("//input[@value='John']")
etassert_equal 'John', find_field('Your name').value
find_field('field-name').value.should have_content('John')
si vous ne voulez pas de match sur l'ensemble de la valeur du champ.Une autre jolie solution serait:
ou
respectivement.
Également voir le référence.
Note: pour les personnes handicapées entrées, vous devez ajouter l'option
disabled: true
.with
certainement ne retourne true si la valeur correspond, pour moi, qui est le résultat attendu.expected […] but there were no matches. Also found "", which matched the selector but not all filters..
sur un champ vide, qui est très proche d'un très beau message d'erreur.expect(page).to have_field('Your name', with: 'John', disabled: true)
pour que cela fonctionne.Si vous souhaitez tester un espace réservé, utilisation:
ou:
Si vous voulez tester la valeur saisie par l'utilisateur:
Je me demandais comment faire quelque chose de légèrement différent: j'ai voulu tester si le champ n'avait certains valeur (tout en faisant usage de Le Capybara est de la capacité de re-tester le matcher jusqu'à ce qu'il corresponde à). Il s'avère qu'il est possible d'utiliser un "bloc de filtre" pour ce faire: