For the HTML
<select id="date">
<option value="20120904">Tue 4 Sep 2012</option>
<option value="20120905">Wed 5 Sep 2012</option>
<option value="20120906">Thu 6 Sep 2012</option>
</select>
I have the following Capybara Ruby code:
select "20120905", :from => "date"
But this errors with:
cannot select option, no option with text '20120905' in select box 'date' (Capybara::ElementNotFound)
However, if I do
select "Wed 5 Sep 2012", :from => "date"
It's ok.
Is it possible to select an option in Capybara by Value not Text?
Thanks
You can also achieve it by doing the following:
In my case I have a few options with same text, that's the reason why I need select by value. Combining a few answers together I've found the best solution for me:
With Poltergeist as driver I can't click on an option like suggested in some of the other options above, instead you can do the following:
page.find_by_id('date').find("option[value='20120905']").select_option
I wrote a helper method:
Save in a .rb file in spec/support/
Example use:
This will work to select an option by value:
To maintain the scope of the selector you could wrap it in a within block as such:
That helper method pretty clever. I would change it a little:
end
or just: