Module: Capybara::Node::Actions
- Included in:
- Base
- Defined in:
- lib/capybara/node/actions.rb
Instance Method Summary collapse
-
#attach_file(locator, path) ⇒ Object
Find a file field on the page and attach a file given its path.
-
#check(locator) ⇒ Object
Find a check box and mark it as checked.
-
#choose(locator) ⇒ Object
Find a radio button and mark it as checked.
-
#click_button(locator) ⇒ Object
Finds a button by id, text or value and clicks it.
-
#click_link(locator) ⇒ Object
Finds a link by id or text and clicks it.
-
#click_link_or_button(locator) ⇒ 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
Find a select box on the page and select a particular option from it.
-
#uncheck(locator) ⇒ Object
Find a check box and mark uncheck it.
-
#unselect(value, options = {}) ⇒ Object
Find a select box on the page and select a particular option from it.
Instance Method Details
#attach_file(locator, path) ⇒ 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')
154 155 156 157 |
# File 'lib/capybara/node/actions.rb', line 154 def attach_file(locator, path) msg = "cannot attach file, no file field with id, name, or label '#{locator}' found" find(:xpath, XPath::HTML.file_field(locator), :message => msg).set(path) end |
#check(locator) ⇒ 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')
80 81 82 83 |
# File 'lib/capybara/node/actions.rb', line 80 def check(locator) msg = "cannot check field, no checkbox with id, name, or label '#{locator}' found" find(:xpath, XPath::HTML.checkbox(locator), :message => msg).set(true) end |
#choose(locator) ⇒ 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')
66 67 68 69 |
# File 'lib/capybara/node/actions.rb', line 66 def choose(locator) msg = "cannot choose field, no radio button with id, name, or label '#{locator}' found" find(:xpath, XPath::HTML.(locator), :message => msg).set(true) end |
#click_button(locator) ⇒ Object
Finds a button by id, text or value and clicks it.
36 37 38 39 |
# File 'lib/capybara/node/actions.rb', line 36 def (locator) msg = "no button with value or id or text '#{locator}' found" find(:xpath, XPath::HTML.(locator), :message => msg).click end |
#click_link(locator) ⇒ Object
Finds a link by id or text and clicks it. Also looks at image alt text inside the link.
25 26 27 28 |
# File 'lib/capybara/node/actions.rb', line 25 def click_link(locator) msg = "no link with title, id or text '#{locator}' found" find(:xpath, XPath::HTML.link(locator), :message => msg).click end |
#click_link_or_button(locator) ⇒ 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 15 |
# File 'lib/capybara/node/actions.rb', line 12 def (locator) msg = "no link or button '#{locator}' found" find(:xpath, XPath::HTML.(locator), :message => msg).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'
51 52 53 54 55 |
# File 'lib/capybara/node/actions.rb', line 51 def fill_in(locator, ={}) msg = "cannot fill in, no text field, text area or password field with id, name, or label '#{locator}' found" raise "Must pass a hash containing 'with'" if not .is_a?(Hash) or not .has_key?(:with) find(:xpath, XPath::HTML.fillable_field(locator), :message => msg).set([:with]) end |
#select(value, options = {}) ⇒ Object
Find a select box on the page and select a particular option from 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.
page.select 'March', :from => 'Month'
110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/capybara/node/actions.rb', line 110 def select(value, ={}) if .has_key?(:from) no_select_msg = "cannot select option, no select box with id, name, or label '#{[:from]}' found" no_option_msg = "cannot select option, no option with text '#{value}' in select box '#{[:from]}'" select = find(:xpath, XPath::HTML.select([:from]), :message => no_select_msg) select.find(:xpath, XPath::HTML.option(value), :message => no_option_msg).select_option else no_option_msg = "cannot select option, no option with text '#{value}'" find(:xpath, XPath::HTML.option(value), :message => no_option_msg).select_option end end |
#uncheck(locator) ⇒ Object
Find a check box and mark uncheck it. The check box can be found via name, id or label text.
page.uncheck('German')
94 95 96 97 |
# File 'lib/capybara/node/actions.rb', line 94 def uncheck(locator) msg = "cannot uncheck field, no checkbox with id, name, or label '#{locator}' found" find(:xpath, XPath::HTML.checkbox(locator), :message => msg).set(false) end |
#unselect(value, options = {}) ⇒ Object
Find a select box on the page and select a particular option from 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.
page.uncheck('German')
132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/capybara/node/actions.rb', line 132 def unselect(value, ={}) if .has_key?(:from) no_select_msg = "cannot unselect option, no select box with id, name, or label '#{[:from]}' found" no_option_msg = "cannot unselect option, no option with text '#{value}' in select box '#{[:from]}'" select = find(:xpath, XPath::HTML.select([:from]), :message => no_select_msg) select.find(:xpath, XPath::HTML.option(value), :message => no_option_msg).unselect_option else no_option_msg = "cannot unselect option, no option with text '#{value}'" find(:xpath, XPath::HTML.option(value), :message => no_option_msg).unselect_option end end |