Module: Capybara::Node::Actions
- Included in:
- Capybara::Node
- 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
Finds a button or link by id, text or value and clicks it.
-
#drag(source_locator, target_locator) ⇒ Object
deprecated
Deprecated.
Use Capybara::Element#drag_to instead.
-
#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')
152 153 154 155 |
# File 'lib/capybara/node/actions.rb', line 152 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')
79 80 81 82 |
# File 'lib/capybara/node/actions.rb', line 79 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')
65 66 67 68 |
# File 'lib/capybara/node/actions.rb', line 65 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.
35 36 37 38 |
# File 'lib/capybara/node/actions.rb', line 35 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.
24 25 26 27 |
# File 'lib/capybara/node/actions.rb', line 24 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
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 |
#drag(source_locator, target_locator) ⇒ Object
Use Capybara::Element#drag_to instead.
Drag one element to another
163 164 165 166 167 |
# File 'lib/capybara/node/actions.rb', line 163 def drag(source_locator, target_locator) source = find(:xpath, source_locator, :message => "drag source '#{source_locator}' not found on page") target = find(:xpath, target_locator, :message => "drag target '#{target_locator}' not found on page") source.drag_to(target) 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'
50 51 52 53 54 |
# File 'lib/capybara/node/actions.rb', line 50 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.uncheck('German')
108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/capybara/node/actions.rb', line 108 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')
93 94 95 96 |
# File 'lib/capybara/node/actions.rb', line 93 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')
130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/capybara/node/actions.rb', line 130 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 |