it-swarm.com.de

Verwendung von fill_in mit find in Capybara (wenn möglich)

Ich möchte Folgendes tun, kann es aber aufgrund der Natur von fill_in nicht, einen Locator als erstes Argument zu erwarten.

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

Ich habe es auch versucht

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

es gibt jedoch keine Methoden, die Daten zurückgeben, um das Element für fill_in zu identifizieren.

Irgendwelche Ideen, wie Sie ein Feld über einen regulären Ausdruck am besten mit fill_in finden können?

87
ants

Wenn Sie aus dem Speicher gehen, ist dies möglicherweise nicht 100% korrekt, aber ich denke, wenn Sie einen Verweis auf das Element selbst haben, würden Sie set anstelle von fill_in verwenden:

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

Für Ihr spezielles Beispiel sollte fill_in jedoch das Element finden können, dessen ID Sie kennen:

fill_in 'donation_pledge_hundreds', with: "10"
149
Jon M

Anstelle einer Methode können Sie Klammern verwenden, um :name oder :id zurückzugeben, z. B. . element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10" Dieselbe Methode kann mit select - select my_type, from: find('select[name$="[type]"]')[:name] verwendet werden.

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

Es ist erwähnenswert, dass Sie Ihre Funde ketten können.

@modal = find(".modal")
@modal.find('input[name=foo]').set "bar"
3
Nate
element = find(:css, "input[id$='donation_pledge_hundreds']")   
element.fill_in with: "10"
1
aki
fill_in <$id>, :with => 'text you want to fill in'
0
Chints Vadgama