module Capybara::Node::Actions

Public Instance Methods

attach_file(locator, path, options={}) click to toggle source

Find a file field on the page and attach a file given its path. The file field can be found via its name, id or label text.

page.attach_file(locator, '/path/to/file.png')

@param [String] locator Which field to attach the file to @param [String] path The path of the file that will be attached, or an array of paths

@option options [Symbol] match (Capybara.match) The matching strategy to use (:one, :first, :prefer_exact, :smart). @option options [Boolean] exact (Capybara.exact) Match the exact label name/contents or accept a partial match. @option options [Fixnum] wait (Capybara.default_max_wait_time) If using a Javascript driver, maximum number of seconds during which the element will be searched for. @option options [Boolean] multiple Match field which allows multiple file selection

# File lib/capybara/node/actions.rb, line 159
def attach_file(locator, path, options={})
  Array(path).each do |p|
    raise Capybara::FileNotFound, "cannot attach file, #{p} does not exist" unless File.exist?(p.to_s)
  end
  find(:file_field, locator, options).set(path)
end
check(locator, options={}) click to toggle source

Find a check box and mark it as checked. The check box can be found via name, id or label text.

page.check('German')

@param [String] locator Which check box to check

# File lib/capybara/node/actions.rb, line 84
def check(locator, options={})
  find(:checkbox, locator, options).set(true)
end
choose(locator, options={}) click to toggle source

Find a radio button and mark it as checked. The radio button can be found via name, id or label text.

page.choose('Male')

@param [String] locator Which radio button to choose

# File lib/capybara/node/actions.rb, line 71
def choose(locator, options={})
  find(:radio_button, locator, options).set(true)
end
click_button(locator, options={}) click to toggle source

Finds a button on the page and clicks it. This can be any <input> element of type submit, reset, image, button or it can be a <button> element. All buttons can be found by their id, value, or title. <button> elements can also be found by their text content, and image <input> elements by their alt attribute

@param [String] locator Which button to find @param options See {Capybara::Node::Finders#find_button}

# File lib/capybara/node/actions.rb, line 39
def click_button(locator, options={})
  find(:button, locator, options).click
end
click_on(locator, options={})
fill_in(locator, options={}) click to toggle source

Locate a text field or text area and fill it in with the given text The field can be found via its name, id or label text.

page.fill_in 'Name', :with => 'Bob'

@param [String] locator Which field to fill in @param [Hash] options @option options [String] :with The value to fill in - required @option options [Hash] :fill_options Driver specific options regarding how to fill fields

# File lib/capybara/node/actions.rb, line 55
def fill_in(locator, options={})
  raise "Must pass a hash containing 'with'" if not options.is_a?(Hash) or not options.has_key?(:with)
  with = options.delete(:with)
  fill_options = options.delete(:fill_options)
  find(:fillable_field, locator, options).set(with, fill_options)
end
select(value, options={}) click to toggle source

If `:from` option is present, `select` finds a select box on the page and selects a particular option from it. Otherwise it finds an option inside current scope and selects it. If the select box is a multiple select, select can be called multiple times to select more than one option. The select box can be found via its name, id or label text. The option can be found by its text.

page.select 'March', :from => 'Month'

@param [String] value Which option to select @option options [String] :from The id, name or label of the select box

# File lib/capybara/node/actions.rb, line 115
def select(value, options={})
  if options.has_key?(:from)
    from = options.delete(:from)
    find(:select, from, options).find(:option, value, options).select_option
  else
    find(:option, value, options).select_option
  end
end
uncheck(locator, options={}) click to toggle source

Find a check box and mark uncheck it. The check box can be found via name, id or label text.

page.uncheck('German')

@param [String] locator Which check box to uncheck

# File lib/capybara/node/actions.rb, line 97
def uncheck(locator, options={})
  find(:checkbox, locator, options).set(false)
end
unselect(value, options={}) click to toggle source

Find a select box on the page and unselect a particular option from it. If the select box is a multiple select, unselect can be called multiple times to unselect more than one option. The select box can be found via its name, id or label text.

page.unselect 'March', :from => 'Month'

@param [String] value Which option to unselect @param [Hash{:from => String}] options The id, name or label of the select box

# File lib/capybara/node/actions.rb, line 135
def unselect(value, options={})
  if options.has_key?(:from)
    from = options.delete(:from)
    find(:select, from, options).find(:option, value, options).unselect_option
  else
    find(:option, value, options).unselect_option
  end
end