Add support for 'button' elements in forms, and selecting
them by inner text
This commit is contained in:
parent
13b0ec75f4
commit
e6486b640b
@ -101,8 +101,12 @@ module Webrat
|
||||
|
||||
class ButtonField < Field
|
||||
|
||||
def matches_text?(text)
|
||||
@element.innerHTML =~ /#{Regexp.escape(text.to_s)}/i
|
||||
end
|
||||
|
||||
def matches_value?(value)
|
||||
@element["value"] =~ /^\W*#{Regexp.escape(value.to_s)}/i
|
||||
@element["value"] =~ /^\W*#{Regexp.escape(value.to_s)}/i || matches_text?(value)
|
||||
end
|
||||
|
||||
def to_param
|
||||
|
@ -45,7 +45,7 @@ module Webrat
|
||||
|
||||
@fields = []
|
||||
|
||||
(@element / "input, textarea, select").each do |field_element|
|
||||
(@element / "button, input, textarea, select").each do |field_element|
|
||||
@fields << Field.class_for_element(field_element).new(self, field_element)
|
||||
end
|
||||
|
||||
|
@ -332,4 +332,26 @@ class ClicksButtonTest < Test::Unit::TestCase
|
||||
@session.expects(:get_via_redirect).with("/login", "user" => {"email" => ""})
|
||||
@session.clicks_button
|
||||
end
|
||||
|
||||
def test_should_recognize_button_tags
|
||||
@response.stubs(:body).returns(<<-EOS)
|
||||
<form method="get" action="/login">
|
||||
<input id="user_email" name="user[email]" value="" type="text" />
|
||||
<button type="submit" />
|
||||
</form>
|
||||
EOS
|
||||
@session.expects(:get_via_redirect).with("/login", "user" => {"email" => ""})
|
||||
@session.clicks_button
|
||||
end
|
||||
|
||||
def test_should_recognize_button_tags_by_content
|
||||
@response.stubs(:body).returns(<<-EOS)
|
||||
<form method="get" action="/login">
|
||||
<input id="user_email" name="user[email]" value="" type="text" />
|
||||
<button type="submit">Login</button>
|
||||
</form>
|
||||
EOS
|
||||
@session.expects(:get_via_redirect).with("/login", "user" => {"email" => ""})
|
||||
@session.clicks_button "Login"
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user