Capybara: Wie fülle ich ein Eingabefeld anhand seiner ID aus?

87

Ich habe das:

<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> 

Wie fülle ich ein Feld anhand seiner ID aus?

Nerian
quelle

Antworten:

123

fill_in akzeptiert die ID als ersten Parameter:

fill_in 'course_group_courses_attributes_2_name', :with => 'some text'
Raidfive
quelle
9
Ich dachte schon, aber es funktioniert nicht. Es scheint, dass es es nicht füllt. Es gibt keine Fehler, wenn Sie es nicht finden. Es füllt es einfach nicht aus.
Nerian
Vielleicht können Sie den fraglichen Capybara-Code und jeden anderen verwandten Code einfügen.
Raidfive
Ich entdeckte, dass das Problem in Mongoid war. Befreien Sie Kandidatenfehler.
Nerian
@Nerian ah!
Ich bin
Haben wir die Lösung?
Zakos
32

Sie können es auch tun mit:

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

fill_inakzeptiert id ohne das # -Symbol, das ich zuerst verwirrend fand. Beachten Sie auch, dass Sie, wenn sich Ihr Eingabefeld in einem Modal befindet, möglicherweise auf den Übergang warten oder einblenden müssen, bevor das Feld ausgefüllt werden kann.

Seltsame Nut
quelle
4

Wenn Sie simple_form gem verwenden, müssen Sie beachten, dass es Ihre Formularelemente automatisch identifiziert. Daher ist es sinnlos, Elemente selbst manuell zu identifizieren !

Es gibt; Eine Namenskonvention, der simple_form für ID-Formularelemente folgt.

object_attribute

Wenn Sie also Informationen für ein Kontaktobjekt wie folgt eingeben:

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

simple_form generiert dann automatisch IDs für jedes Formularelement.

id="contact_first_name"
id="contact_last_name"

Jetzt können Sie diese Namenskonvention einfach verwenden, um alle Ihre Anforderungen an fill_in zu erfüllen. Hoffe das hilft.

Moeabdol
quelle