Module: Capybara::Node::Actions
- Included in:
- Base
- Defined in:
- lib/capybara/node/actions.rb
Instance Method Summary collapse
-
#attach_file(locator, path, options = {}) ⇒ Object
Find a file field on the page and attach a file given its path.
-
#check(locator, options = {}) ⇒ Object
Find a check box and mark it as checked.
-
#choose(locator, options = {}) ⇒ Object
Find a radio button and mark it as checked.
-
#click_button(locator, options = {}) ⇒ Object
Finds a button on the page and clicks it.
-
#click_link(locator, options = {}) ⇒ Object
Finds a link by id, text or title and clicks it.
-
#click_link_or_button(locator, options = {}) ⇒ Object
(also: #click_on)
Finds a button or link by id, text or value and clicks it.
-
#fill_in(locator, options = {}) ⇒ Object
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.
-
#select(value, options = {}) ⇒ Object
If ‘:from` option is present, `select` finds a select box on the page and selects a particular option from it.
-
#uncheck(locator, options = {}) ⇒ Object
Find a check box and mark uncheck it.
-
#unselect(value, options = {}) ⇒ Object
Find a select box on the page and unselect a particular option from it.
Instance Method Details
#attach_file(locator, path, options = {}) ⇒ Object
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')
153 154 155 156 157 158 |
# File 'lib/capybara/node/actions.rb', line 153 def attach_file(locator, path, ={}) 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, ).set(path) end |
#check(locator, options = {}) ⇒ Object
Find a check box and mark it as checked. The check box can be found via name, id or label text.
page.check('German')
83 84 85 |
# File 'lib/capybara/node/actions.rb', line 83 def check(locator, ={}) find(:checkbox, locator, ).set(true) end |
#choose(locator, options = {}) ⇒ Object
Find a radio button and mark it as checked. The radio button can be found via name, id or label text.
page.choose('Male')
70 71 72 |
# File 'lib/capybara/node/actions.rb', line 70 def choose(locator, ={}) find(:radio_button, locator, ).set(true) end |
#click_button(locator, options = {}) ⇒ Object
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
38 39 40 |
# File 'lib/capybara/node/actions.rb', line 38 def (locator, ={}) find(:button, locator, ).click end |
#click_link(locator, options = {}) ⇒ Object
Finds a link by id, text or title and clicks it. Also looks at image alt text inside the link.
25 26 27 |
# File 'lib/capybara/node/actions.rb', line 25 def click_link(locator, ={}) find(:link, locator, ).click end |
#click_link_or_button(locator, options = {}) ⇒ Object Also known as: click_on
Finds a button or link by id, text or value and clicks it. Also looks at image alt text inside the link.
12 13 14 |
# File 'lib/capybara/node/actions.rb', line 12 def (locator, ={}) find(:link_or_button, locator, ).click end |
#fill_in(locator, options = {}) ⇒ Object
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'
54 55 56 57 58 59 |
# File 'lib/capybara/node/actions.rb', line 54 def fill_in(locator, ={}) raise "Must pass a hash containing 'with'" if not .is_a?(Hash) or not .has_key?(:with) with = .delete(:with) = .delete(:fill_options) find(:fillable_field, locator, ).set(with, ) end |
#select(value, options = {}) ⇒ Object
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'
114 115 116 117 118 119 120 121 |
# File 'lib/capybara/node/actions.rb', line 114 def select(value, ={}) if .has_key?(:from) from = .delete(:from) find(:select, from, ).find(:option, value, ).select_option else find(:option, value, ).select_option end end |
#uncheck(locator, options = {}) ⇒ Object
Find a check box and mark uncheck it. The check box can be found via name, id or label text.
page.uncheck('German')
96 97 98 |
# File 'lib/capybara/node/actions.rb', line 96 def uncheck(locator, ={}) find(:checkbox, locator, ).set(false) end |
#unselect(value, options = {}) ⇒ Object
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'
134 135 136 137 138 139 140 141 |
# File 'lib/capybara/node/actions.rb', line 134 def unselect(value, ={}) if .has_key?(:from) from = .delete(:from) find(:select, from, ).find(:option, value, ).unselect_option else find(:option, value, ).unselect_option end end |