Capybara: come faccio a compilare un campo di input con il suo ID


88

Ho questo:

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

Come faccio a compilare un campo con il suo ID?

Risposte:


126

fill_in accetta l'id come primo parametro:

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

9
Lo pensavo, ma non funziona. Sembra che non lo riempia. Non dà errori sul non trovarlo. Semplicemente non lo riempie.
Nerian

Forse puoi includere il codice capibara in questione e qualsiasi altro codice correlato.
raidfive

Ho scoperto che il problema era in Mongoid. Rilascia i bug dei candidati.
Nerian

@ Nerian ah! contento che tu l'abbia capito
raidfive

abbiamo la soluzione?
Zante

32

Puoi farlo anche con:

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

7

fill_inaccetta id senza il simbolo # che all'inizio ho trovato confuso. Si noti inoltre che se il campo di input è in modalità modale, potrebbe essere necessario attendere la transizione o dissolvenza in apertura prima di poter compilare il campo.


4

Se stai usando simple_form gem, devi notare che identifica automaticamente gli elementi del tuo modulo, quindi identificare manualmente gli elementi da solo è inutile!

C'è; tuttavia, una convenzione di denominazione che simple_form segue per identificare gli elementi del modulo.

object_attribute

Quindi, se stai inserendo le informazioni per diciamo un oggetto contatto come segue:

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

simple_form genererà quindi automaticamente gli ID per ciascun elemento del modulo rispettivamente in questo modo:

id="contact_first_name"
id="contact_last_name"

Ora puoi semplicemente utilizzare questa convenzione di denominazione per soddisfare tutte le tue esigenze di fill_in. Spero che sia di aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.