I have a field with a proper label that I can fill in with capybara without a problem:
fill_in 'Your name', with: 'John'
I'd like to check the value it has before filling it in and can't figure it out.
If I add after the fill_in
the following line:
find_field('Your name').should have_content('John')
That test fails, although the filling just before worked as I've verified by saving the page.
What am I missing?
You can use an xpath query to check if there's an input
element with a particular value (e.g. 'John'):
expect(page).to have_xpath("//input[@value='John']")
See http://www.w3schools.com/xpath/xpath_syntax.asp for more info.
For perhaps a prettier way:
expect(find_field('Your name').value).to eq 'John'
EDIT: Nowadays I'd probably use have_selector
expect(page).to have_selector("input[value='John']")
If you are using the page object pattern(you should be!)
class MyPage < SitePrism::Page
element :my_field, "input#my_id"
def has_secret_value?(value)
my_field.value == value
end
end
my_page = MyPage.new
expect(my_page).to have_secret_value "foo"