Parent

Included Modules

Webrat::Scope

Constants

DATE_TIME_SUFFIXES

Attributes

session[R]

Public Instance Methods

attach_file(field_locator, path, content_type = nil) click to toggle source

Verifies that an input file field exists on the current page and sets its value to the given file, so that the file will be uploaded along with the form. An optional content_type may be given.

Example:

attach_file "Resume", "/path/to/the/resume.txt"
attach_file "Photo", "/path/to/the/image.png", "image/png"
# File lib/webrat/core/scope.rb, line 230
def attach_file(field_locator, path, content_type = nil)
  locate_field(field_locator, FileField).set(path, content_type)
end
check(field_locator) click to toggle source

Verifies that an input checkbox exists on the current page and marks it as checked, so that the value will be submitted with the form.

Example:

check 'Remember Me'
# File lib/webrat/core/scope.rb, line 73
def check(field_locator)
  locate_field(field_locator, CheckboxField).check
end
choose(field_locator) click to toggle source

Verifies that an input radio button exists on the current page and marks it as checked, so that the value will be submitted with the form.

Example:

choose 'First Option'
# File lib/webrat/core/scope.rb, line 95
def choose(field_locator)
  locate_field(field_locator, RadioField).choose
end
click_area(area_name) click to toggle source

Issues a request for the URL pointed to by an area tag on the current page, follows any redirects, and verifies the final page load was successful.

The area used is the first area whose title or id contains the given area_name (case is ignored).

Example:

click_area 'Australia'
# File lib/webrat/core/scope.rb, line 245
def click_area(area_name)
  find_area(area_name).click
end
click_button(value = nil) click to toggle source

Verifies that a submit button exists for the form, then submits the form, follows any redirects, and verifies the final page was successful.

Example:

click_button "Login"
click_button

The URL and HTTP method for the form submission are automatically read from the action and method attributes of the <form> element.

# File lib/webrat/core/scope.rb, line 290
def click_button(value = nil)
  find_button(value).click
end
fill_in(field_locator, options = {}) click to toggle source

Verifies an input field or textarea exists on the current page, and stores a value for it which will be sent when the form is submitted.

Examples:

fill_in "Email", :with => "user@example.com"
fill_in "user[email]", :with => "user@example.com"

The field value is required, and must be specified in options[:with]. field can be either the value of a name attribute (i.e. user[email]) or the text inside a <label> element that points at the <input> field.

# File lib/webrat/core/scope.rb, line 50
def fill_in(field_locator, options = {})
  field = locate_field(field_locator, TextField, TextareaField, PasswordField)
  field.raise_error_if_disabled
  field.set(options[:with])
end
select(option_text, options = {}) click to toggle source

Verifies that a an option element exists on the current page with the specified text. You can optionally restrict the search to a specific select list by assigning options[:from] the value of the select list's name or a label. Stores the option's value to be sent when the form is submitted.

Examples:

select "January"
select "February", :from => "event_month"
select "February", :from => "Event Month"
# File lib/webrat/core/scope.rb, line 110
def select(option_text, options = {})
  select_option(option_text, options[:from]).choose
end
select_date(date_to_select, options ={}) click to toggle source

Verifies that date elements (year, month, day) exist on the current page with the specified values. You can optionally restrict the search to a specific date's elements by assigning options[:from] the value of the date's label. Selects all the date elements with date provided. The date provided may be a string or a Date/Time object.

Rail's convention is used for detecting the date elements. All elements are assumed to have a shared prefix. You may also specify the prefix by assigning options[:id_prefix].

Examples:

select_date "January 23, 2004"
select_date "April 26, 1982", :from => "Birthday"
select_date Date.parse("December 25, 2000"), :from => "Event"
select_date "April 26, 1982", :id_prefix => 'birthday'
# File lib/webrat/core/scope.rb, line 154
def select_date(date_to_select, options ={})
  date = date_to_select.is_a?(Date) || date_to_select.is_a?(Time) ?
            date_to_select : Date.parse(date_to_select)

  id_prefix = locate_id_prefix(options) do
    year_field = FieldByIdLocator.new(@session, dom, /(.*?)_#{DATE_TIME_SUFFIXES[:year]}$/).locate
    raise NotFoundError.new("No date fields were found") unless year_field && year_field.id =~ /(.*?)_1i/
    $1
  end

  select date.year, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:year]}"
  select date.strftime('%B'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:month]}"
  select date.day, :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:day]}"
end
select_datetime(time_to_select, options ={}) click to toggle source

Verifies and selects all the date and time elements on the current page. See select_time and select_date for more details and available options.

Examples:

select_datetime "January 23, 2004 10:30AM"
select_datetime "April 26, 1982 7:00PM", :from => "Birthday"
select_datetime Time.parse("December 25, 2000 15:30"), :from => "Event"
select_datetime "April 26, 1982 5:50PM", :id_prefix => 'birthday'
# File lib/webrat/core/scope.rb, line 212
def select_datetime(time_to_select, options ={})
  time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)

  options[:id_prefix] ||= (options[:from] ? FieldByIdLocator.new(@session, dom, options[:from]).locate : nil)

  select_date time, options
  select_time time, options
end
select_time(time_to_select, options ={}) click to toggle source

Verifies that time elements (hour, minute) exist on the current page with the specified values. You can optionally restrict the search to a specific time's elements by assigning options[:from] the value of the time's label. Selects all the time elements with date provided. The time provided may be a string or a Time object.

Rail's convention is used for detecting the time elements. All elements are assumed to have a shared prefix. You may specify the prefix by assigning options[:id_prefix].

Note: Just like Rails' time_select helper this assumes the form is using 24 hour select boxes, and not 12 hours with AM/PM.

Examples:

select_time "9:30"
select_date "3:30PM", :from => "Party Time"
select_date Time.parse("10:00PM"), :from => "Event"
select_date "10:30AM", :id_prefix => 'meeting'
# File lib/webrat/core/scope.rb, line 189
def select_time(time_to_select, options ={})
  time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select)

  id_prefix = locate_id_prefix(options) do
    hour_field = FieldByIdLocator.new(@session, dom, /(.*?)_#{DATE_TIME_SUFFIXES[:hour]}$/).locate
    raise NotFoundError.new("No time fields were found") unless hour_field && hour_field.id =~ /(.*?)_4i/
    $1
  end

  select time.hour.to_s.rjust(2,'0'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:hour]}"
  select time.min.to_s.rjust(2,'0'), :from => "#{id_prefix}_#{DATE_TIME_SUFFIXES[:minute]}"
end
set_hidden_field(field_locator, options = {}) click to toggle source

Verifies that a hidden field exists on the current page and sets the value to that given by the :to option.

Example:

set_hidden_field 'user_id', :to => 1
# File lib/webrat/core/scope.rb, line 63
def set_hidden_field(field_locator, options = {})
  field = locate_field(field_locator, HiddenField)
  field.set(options[:to])
end
submit_form(id) click to toggle source

Submit the form with the given id.

Note that click_button is usually preferrable for simulating form submissions, as you may specify part of the button text rather than the form id.

Example:

submit_form 'login'
# File lib/webrat/core/scope.rb, line 304
def submit_form(id)
  FormLocator.new(@session, dom, id).locate.submit
end
uncheck(field_locator) click to toggle source

Verifies that an input checkbox exists on the current page and marks it as unchecked, so that the value will not be submitted with the form.

Example:

uncheck 'Remember Me'
# File lib/webrat/core/scope.rb, line 84
def uncheck(field_locator)
  locate_field(field_locator, CheckboxField).uncheck
end
unselect(option_text, options={}) click to toggle source

Verifies that a an option element exists on the current page with the specified text. You can optionally restrict the search to a specific select list by assigning options[:from] the value of the select list's name or a label. Remove the option's value before the form is submitted.

Examples:

unselect "January"
unselect "February", :from => "event_month"
unselect "February", :from => "Event Month"
# File lib/webrat/core/scope.rb, line 125
def unselect(option_text, options={})
  select_option(option_text, options[:from]).unchoose
end

Protected Instance Methods

scoped_dom() click to toggle source
# File lib/webrat/core/scope.rb, line 335
def scoped_dom
  @scope.dom.css(@selector).first
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.