Capybara: Comment remplir un champ de saisie par son identifiant


87

J'ai ceci:

<input class="string optional" 
    id="course_group_courses_attributes_2_name" 
    name="course_group[courses_attributes][2][name]" 
    placeholder="Lengua" 
    size="15" 
    type="text" />
</div> 

Comment remplir ce champ par son identifiant?

Réponses:


125

fill_in accepte l'id comme premier paramètre:

fill_in 'course_group_courses_attributes_2_name', :with => 'some text'

9
Je pensais que oui, mais cela ne fonctionne pas. Il semble qu'il ne le remplit pas. Cela ne donne aucune erreur sur le fait de ne pas le trouver. Cela ne le remplit tout simplement pas.
Nerian

Vous pouvez peut-être inclure le code capybara en question et tout autre code associé.
raidfive du

J'ai découvert que le problème était en Mongoïde. Relâchez les bogues des candidats.
Nerian

@Nerian ah! heureux que vous l'ayez compris
raidfive

avons-nous la solution?
Zakos

32

Vous pouvez également le faire avec:

find('Id or class here').set('some text')

7

fill_inaccepte id sans le symbole # que j'ai trouvé déroutant au début. Notez également que si votre champ de saisie est dans un modal, vous devrez peut-être attendre la transition ou faire un fondu avant que le champ puisse être rempli.


4

Si vous utilisez simple_form gem, vous devez noter qu'il identifie automatiquement vos éléments de formulaire, par conséquent, l'identification manuelle des éléments vous-même est inutile!

Il y a; cependant, une convention de dénomination que simple_form suit pour identifier les éléments du formulaire.

object_attribute

Donc, si vous remplissez des informations pour, disons, un objet de contact comme suit:

= simple_form_for @contact do |f|
  = f.input :first_name
  = f.input :last_name

simple_form générera alors automatiquement des identifiants pour chaque élément de formulaire respectivement comme suit:

id="contact_first_name"
id="contact_last_name"

Maintenant, vous pouvez simplement utiliser cette convention de dénomination pour répondre à tous vos besoins de fill_in. J'espère que cela t'aides.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.