web-dev-qa-db-fra.com

Comment utiliser fill_in avec find à Capybara (si possible)

J'aimerais faire ce qui suit, mais je ne peux pas, en raison de la nature de fill_in, attendre un localisateur comme premier argument.

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

J'ai aussi essayé de faire

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

mais il n'y a pas de méthode qui retourne des données pour identifier l'élément à fill_in.

Des idées sur la meilleure façon de trouver un champ via une expression rationnelle à utiliser avec fill_in?

87
ants

Aller de mémoire peut ne pas être correct à 100%, mais je pense que si vous avez une référence à l'élément même, vous utiliseriez set au lieu de fill_in:

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

Cependant, pour votre exemple spécifique, fill_in devrait pouvoir trouver l'élément comme vous le savez son ID:

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

Au lieu d'une méthode, vous pouvez utiliser des crochets pour renvoyer :name ou :id, par exemple . element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10" La même approche peut être utilisée avec select - select my_type, from: find('select[name$="[type]"]')[:name]

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

Il est à noter que vous pouvez chaîner vos trouvailles.

@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