Check checkboxes

This commit is contained in:
Jonas Nicklas 2009-11-11 21:55:20 +01:00
parent c2320a4f95
commit 91caa40326
4 changed files with 29 additions and 8 deletions

View File

@ -18,6 +18,8 @@ class Webcat::Driver::RackTest
elsif tag_name == 'input' and type == 'radio'
session.html.xpath("//input[@name='#{self[:name]}']").each { |node| node.remove_attribute("checked") }
node['checked'] = 'checked'
elsif tag_name == 'input' and type == 'checkbox'
node['checked'] = 'checked'
elsif tag_name == "textarea"
node.content = value.to_s
end

View File

@ -40,6 +40,10 @@ class Webcat::Session
def set_hidden_field(locator, options={})
find_field(locator, :hidden_field).set(options[:to])
end
def check(locator)
find_field(locator, :checkbox).set(true)
end
def body
driver.body
@ -64,7 +68,8 @@ private
:text_area => proc { |id| "//textarea[@id='#{id}']" },
:password_field => proc { |id| "//input[@type='password'][@id='#{id}']" },
:radio => proc { |id| "//input[@type='radio'][@id='#{id}']" },
:hidden_field => proc { |id| "//input[@type='hidden'][@id='#{id}']" }
:hidden_field => proc { |id| "//input[@type='hidden'][@id='#{id}']" },
:checkbox => proc { |id| "//input[@type='checkbox'][@id='#{id}']" }
}
def find_field_by_id(locator, *kinds)

View File

@ -206,7 +206,21 @@ shared_examples_for "session" do
end
describe "#check" do
before do
@session.visit('/form')
end
it "should check a checkbox by id" do
@session.check("form_pets_cat")
@session.click_button('awesome')
YAML.load(@session.body)['pets'].should include('dog', 'cat', 'hamster')
end
it "should check a checkbox by label" do
@session.check("Cat")
@session.click_button('awesome')
YAML.load(@session.body)['pets'].should include('dog', 'cat', 'hamster')
end
end
describe "#uncheck" do

View File

@ -68,12 +68,12 @@
</p>
<p>
<input type="checkbox" value="dog" name="form[pets][]" id="pets_dog" checked="checked"/>
<label for="pets_dog">Dog</label>
<input type="checkbox" value="cat" name="form[pets][]" id="pets_cat"/>
<label for="pets_cat">Cat</label>
<input type="checkbox" value="hamster" name="form[pets][]" id="pets_hamster" checked="checked"/>
<label for="pets_hamster">Hamster</label>
<input type="checkbox" value="dog" name="form[pets][]" id="form_pets_dog" checked="checked"/>
<label for="form_pets_dog">Dog</label>
<input type="checkbox" value="cat" name="form[pets][]" id="form_pets_cat"/>
<label for="form_pets_cat">Cat</label>
<input type="checkbox" value="hamster" name="form[pets][]" id="form_pets_hamster" checked="checked"/>
<label for="form_pets_hamster">Hamster</label>
</p>
<p>