How to use fill_in with find in Capybara (if possible)

FindCapybara

Find Problem Overview


I'd like to do the following but can't due to the nature of fill_in expecting a locator as the first argument.

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

I've also tried doing

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

but there are no methods that return any data to identify the element to fill_in.

Any ideas of the best way of finding a field via a regex for use with fill_in?

Find Solutions


Solution 1 - Find

If you have a reference to the element itself you'd use set instead of fill_in:

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

However for your specific example, fill_in should be able to find the element as you know it's ID:

fill_in 'donation_pledge_hundreds', with: "10"

Solution 2 - Find

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

Solution 3 - Find

Instead of a method, you can use brackets to return :name or :id, e.g.

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

The same approach can be used with select -

select my_type, from: find('select[name$="[type]"]')[:name]

Solution 4 - Find

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

It's worth noting that you can chain your finds.

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

Solution 5 - Find

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionantsView Question on Stackoverflow
Solution 1 - FindJon MView Answer on Stackoverflow
Solution 2 - FindakiView Answer on Stackoverflow
Solution 3 - FindbhfailorView Answer on Stackoverflow
Solution 4 - FindNateView Answer on Stackoverflow
Solution 5 - FindChints VadgamaView Answer on Stackoverflow