web-dev-qa-db-fra.com

Capybara: Comment remplir un champ de saisie par son identifiant

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 puis-je remplir un champ par son ID?

83
Nerian

fill_in accepte l'id comme premier paramètre:

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

Vous pouvez également le faire avec:

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

fill_in accepte 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 fondu avant de pouvoir remplir le champ.

6
Strangegroove

Si vous utilisez simple_form gem alors vous devez noter qu'il identifie automatiquement vos éléments de formulaire, donc l'identification manuelle des éléments est inutile!

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

object_attribute

Donc, si vous remplissez des informations pour, disons, un objet 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"

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

3
moeabdol