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?

Antworten:


123

fill_in akzeptiert die ID als ersten Parameter:

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

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

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.