diff --git a/lib/capybara/node/actions.rb b/lib/capybara/node/actions.rb index b916ed24..7ed6cd69 100644 --- a/lib/capybara/node/actions.rb +++ b/lib/capybara/node/actions.rb @@ -20,9 +20,11 @@ module Capybara # alt text inside the link. # # @param [String] locator Text, id or text of link + # @param options + # @option options [String] :href The value the href attribute must be # - def click_link(locator) - find(:link, locator).click + def click_link(locator, options={}) + find(:link, locator, options).click end ## diff --git a/lib/capybara/spec/session/click_link_spec.rb b/lib/capybara/spec/session/click_link_spec.rb index 85f95708..8a8dbf0f 100644 --- a/lib/capybara/spec/session/click_link_spec.rb +++ b/lib/capybara/spec/session/click_link_spec.rb @@ -66,6 +66,17 @@ Capybara::SpecHelper.spec '#click_link' do end end + context "with :href option given" do + it "should find links with valid href" do + @session.click_link('labore', :href => '/with_simple_html') + @session.should have_content('Bar') + end + + it "should raise error if link wasn't found" do + expect { @session.click_link('labore', :href => 'invalid_href') }.to raise_error(Capybara::ElementNotFound) + end + end + it "should follow relative links" do @session.visit('/') @session.click_link('Relative')