diff --git a/lib/capybara/session.rb b/lib/capybara/session.rb index 20ec4e0a..19235564 100644 --- a/lib/capybara/session.rb +++ b/lib/capybara/session.rb @@ -142,8 +142,9 @@ module Capybara end def find_button(locator) - button = find("//input[@type='submit' or @type='image'][@id='#{locator}' or @value='#{locator}']").first || find("//button[@id='#{locator}' or @value='#{locator}' or contains(.,'#{locator}')]").first - raise Capybara::ElementNotFound, "no button with value or id '#{locator}' found" unless button + button = find("//input[@type='submit' or @type='image'][@id='#{locator}' or @value='#{locator}']").first \ + || find("//button[@id='#{locator}' or @value='#{locator}' or contains(.,'#{locator}')]").first + raise Capybara::ElementNotFound, "no button with value or id or text '#{locator}' found" unless button button end diff --git a/spec/session_spec.rb b/spec/session_spec.rb index 436075d1..3797e9ba 100644 --- a/spec/session_spec.rb +++ b/spec/session_spec.rb @@ -145,6 +145,38 @@ shared_examples_for "session" do end end + context "when the button is defined by a + +