web-dev-qa-db-ja.com

fill_inをカピバラのfindで使用する方法(可能な場合)

私は次のことをしたいと思いますが、fill_inの性質のためにロケーターを最初の引数として期待することはできません。

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

私もやってみました

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

ただし、fill_inに要素を識別するためのデータを返すメソッドはありません。

Fill_inで使用する正規表現を介してフィールドを見つける最良の方法のアイデアはありますか?

89
ants

メモリから移動するのは100%正しいとは限りませんが、要素自体への参照がある場合は、fill_inではなくsetを使用すると思います。

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

ただし、特定の例では、fill_inはIDがわかっている要素を見つけることができるはずです。

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

メソッドの代わりに、ブラケットを使用して_:name_または_:id_を返すことができます。 element = find(:css, "input[id$='donation_pledge_hundreds']") fill_in element[:name], :with => "10"select-select my_type, from: find('select[name$="[type]"]')[:name]でも同じアプローチを使用できます

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

検索結果を連鎖できることに注意してください。

@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