Add support to click_button for IDs (Patch form Gwyn Morfey)

This commit is contained in:
Bryan Helmkamp 2008-10-13 20:50:03 -04:00
parent d7a9447d59
commit cf55dbad94
4 changed files with 17 additions and 1 deletions

View File

@ -26,6 +26,7 @@
* Support clicking links by title (Patch from Dan Barry) * Support clicking links by title (Patch from Dan Barry)
* Added missing spec for clicking image buttons (Patch from Tim Harper) * Added missing spec for clicking image buttons (Patch from Tim Harper)
* Switched tests to specs, and from Mocha to RSpec's mocking library * Switched tests to specs, and from Mocha to RSpec's mocking library
* Add support to click_button for IDs (Patch form Gwyn Morfey)
* Bug fixes * Bug fixes

View File

@ -138,6 +138,10 @@ module Webrat
@element.innerHTML =~ /#{Regexp.escape(text.to_s)}/i @element.innerHTML =~ /#{Regexp.escape(text.to_s)}/i
end end
# def matches_id?(id)
# @element["id"] =~ /^\W*#{Regexp.escape(id.to_s)}/i
# end
def matches_value?(value) def matches_value?(value)
@element["value"] =~ /^\W*#{Regexp.escape(value.to_s)}/i || matches_text?(value) || matches_alt?(value) @element["value"] =~ /^\W*#{Regexp.escape(value.to_s)}/i || matches_text?(value) || matches_alt?(value)
end end

View File

@ -30,7 +30,8 @@ module Webrat
def find_button(value = nil) def find_button(value = nil)
return fields_by_type([ButtonField]).first if value.nil? return fields_by_type([ButtonField]).first if value.nil?
possible_buttons = fields_by_type([ButtonField]) possible_buttons = fields_by_type([ButtonField])
possible_buttons.detect { |possible_button| possible_button.matches_id?(value) } ||
possible_buttons.detect { |possible_button| possible_button.matches_value?(value) } possible_buttons.detect { |possible_button| possible_button.matches_value?(value) }
end end

View File

@ -344,6 +344,16 @@ describe "clicks_button" do
@session.clicks_button @session.clicks_button
end end
it "should find buttons by their IDs" do
@session.response_body = <<-EOS
<form action="/">
<input type="submit" id="my_button" />
</form>
EOS
@session.should_receive(:get)
@session.clicks_button "my_button"
end
it "should find image buttons by their alt text" do it "should find image buttons by their alt text" do
@session.response_body = <<-EOS @session.response_body = <<-EOS
<form action="/"> <form action="/">