Using cucumber and capybara to test a rails app. Assuming I cannot change the markup, can I use capybara to select the following select in a page full of similar tds and selects?

<td> <select name="attributes[ruby][category]"> <option value="2" selected="selected">Languages</option> <option value="3">Communication</option> </select> </td> 

This seems to fail (I assume because of the nested "[" and "]").

find("select[name=attributes[ruby][category]]") 

Escaping doesn't work either. Thoughts?

1

3 Answers

You can try find('select', :name => 'attributes[ruby][category]') or find_field('attributes[ruby][category]').

1

I think you need to quote the attribute value:

find("select[name='attributes[ruby][category]']") 

but maro's suggestion of using find_field is a cleaner approach.

1

More generally you can use XPath

find(:xpath, "//select[@name='attributes[ruby][category]'") 

This approach has the advantage that it can be used for any attribute.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy