I think it's good to use labels for form fields (or ids named after your labels) in general, because that makes your site more accessible. Then, when you use
fill_in 'First Name', with: "Dylan"
you're also testing whether a speech-to-text program can access your form fields.
I also agree with what Wyatt said - you get the most value out of testing exactly how the user would interact with the site.
We also use macros so that when we have to use selectors, it's more human readable. You can add a method to Capybara::Node::Finders called 'last_row_of_table' that uses xpath to access the last row of a table with an id of 'consumers', and then add a method to Capybara::Session that delegates a method with that same name to current_node. Then, you can write things like this:
within(page.last_row_of_table('consumers')) do
click_link 'Edit'
end