2011-12-16 9 views
80

Mi piacerebbe fare quanto segue, ma non posso a causa della natura di fill_in che si aspetta un locatore come primo argomento.Come usare fill_in con find in Capybara (se possibile)

find(:css, "input[id$='donation_pledge_hundreds']").fill_in :with => "10" 

Ho anche provato a fare

element = find(:css, "input[id$='donation_pledge_hundreds']") 
fill_in element.<method> , :with => "10" 

ma non ci sono metodi che restituiscono tutti i dati per identificare l'elemento da FILL_IN.

Qualche idea del modo migliore di trovare un campo tramite una regex da utilizzare con fill_in?

risposta

136

Andando a memoria, quindi non può essere corretta al 100%, ma credo che se si dispone di un riferimento all'elemento stesso devi usare set invece di fill_in:

find(:css, "input[id$='donation_pledge_hundreds']").set("10") 

Tuttavia per il vostro esempio specifico, fill_in dovrebbe essere in grado di trovare l'elemento come sai che è ID:

fill_in 'donation_pledge_hundreds', with: "10" 
+0

Buon uomo, che è l'unica. Quel campo particolare viene utilizzato in diversi contesti (autenticato/non autenticato) e quindi accetta un id di campo diverso. donation_pledge_hundreds è la parte comune dell'id del campo, quindi confronta la fine del nome del campo $ = – ants

+7

Stai attento a usare "set" piuttosto che gli altri metodi incorporati, poiché non attiva gli eventi dopo aver modificato il valore. –

+14

Interfaccia molto confusa ... L'elemento # fill_in per elemento dovrebbe semplicemente compilare ... –

3
find("input[id$='donation_pledge_hundreds']").set "10" 

vale la pena notare che è possibile concatenare le vostre scoperte.

@modal = find(".modal") 
@modal.find('input[name=foo]').set "bar" 
5

Invece di un metodo, è possibile utilizzare le parentesi per tornare :name o :id, per esempio element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10" Lo stesso approccio può essere utilizzato con select - select my_type, from: find('select[name$="[type]"]')[:name]

0
fill_in <$id>, :with => 'text you want to fill in' 
Problemi correlati