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


90

私は次のことをしたいのですが、最初の引数としてロケーターを期待する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で使用するための正規表現を介してフィールドを検索する最良の方法のアイデアはありますか?

回答:


160

メモリからの移動は100%正確ではない可能性がありますが、次のset代わりに使用する要素自体への参照があると思いますfill_in

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

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

fill_in 'donation_pledge_hundreds', with: "10"

いい男、それはそれだ。その特定のフィールドは、異なるコンテキスト(認証済み/非認証)で使用されるため、異なるフィールドIDを取ります。donation_pledge_hundredsはフィールドIDの共通部分なので、フィールド名の終わりを比較します$ =
ant

8
他の組み込みメソッドではなく「set」を使用する場合は注意してください。値を変更した後にイベントがトリガーされることはありません。
Dan Caddigan 2014

@DanCaddiganそしてそれがf3ck3dがアップしているように見える理由です:/それでは、どうしますか?
Ben

find(:css, "...").set("10").send_keys(:return)後でリターンを押すのに使用できます。関連するイベントをトリガーします。私はそれをテストしていませんが、それがあなたのことfind(:css, "...").set("10").trigger(:blur)ならあなたもできます。
gondalez

5

メソッドの代わりに、ブラケットを使用して:nameor を返すことができます: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]


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

発見を連鎖できることは注目に値します。

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

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

コードのみの回答はお勧めしません。これにより問題がどのように解決されるか、またはこれが既存の回答とどのように異なるかについて説明を追加してください。口コミから
ニック

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.