I'm using RSpec2 and Capybara for acceptance testing.
I would like to assert that link is disabled or not in Capybara. How can I do this?
Another simple solution is to access the HTML attribute you are looking for with []
:
find('#my_element')['class']
# => "highlighted clearfix some_other_css_class"
find('a#my_element')['href']
# => "http://example.com
# or in general, find any attribute, even if it does not exist
find('a#my_element')['no_such_attribute']
# => ""
Note that Capybara
will automatically try to wait for asynchronous requests to finish, but it may not work in some cases:
Here is one workaround if you are having trouble with assertions on elements that are updated asynchronously:
How are you disabling the link? Is it a class you're adding? An attribute?
# Check for a link that has a "disabled" class:
page.should have_css("a.my_link.disabled")
page.should have_xpath("//a[@class='disabled']")
# Check for a link that has a "disabled" attribute:
page.should have_css("a.my_link[disabled]")
page.should have_xpath("//a[@class='disabled' and @disabled='disabled']")
# Check that the element is visible
find("a.my_link").should be_visible
find(:xpath, "//a[@class='disabled']").should be_visible
The actual xpath selectors may be incorrect. I don't use xpath often!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With