A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://rubydoc.info/github/teamcapybara/capybara/master/Capybara/Node/Actions below:

Actions – Documentation for teamcapybara/capybara (master) – RubyDoc.info

Module: Capybara::Node::Actions
Included in:
Base
Defined in:
lib/capybara/node/actions.rb
Instance Method Summary collapse Instance Method Details #attach_file([locator], paths, **options) ⇒ Capybara::Node::Element #attach_file(paths) { ... } ⇒ Capybara::Node::Element

Find a descendant file field on the page and attach a file given its path. There are two ways to use #attach_file, in the first method the file field can be found via its name, id, test_id attribute, or label text. In the case of the file field being hidden for styling reasons the make_visible option can be used to temporarily change the CSS of the file field, attach the file, and then revert the CSS back to original. If no locator is passed this will match self or a descendant. The second method, which is currently in beta and may be changed/removed, involves passing a block which performs whatever actions would trigger the file chooser to appear.

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

el.attach_file('/path/to/file.png')

page.attach_file('/path/to/file.png') do
  page.find('#upload_button').click
end
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
# File 'lib/capybara/node/actions.rb', line 279

def attach_file(locator = nil, paths, make_visible: nil, **options)   if locator && block_given?
    raise ArgumentError, '`#attach_file` does not support passing both a locator and a block'
  end

  Array(paths).each do |path|
    raise Capybara::FileNotFound, "cannot attach file, #{path} does not exist" unless File.exist?(path.to_s)
  end
  options[:allow_self] = true if locator.nil?

  if block_given?
    begin
      execute_script CAPTURE_FILE_ELEMENT_SCRIPT
      yield
      file_field = evaluate_script 'window._capybara_clicked_file_input'
      raise ArgumentError, "Capybara was unable to determine the file input you're attaching to" unless file_field
    rescue ::Capybara::NotSupportedByDriverError
      warn 'Block mode of `#attach_file` is not supported by the current driver - ignoring.'
    end
  end
    if make_visible
    ff = file_field || find(:file_field, locator, **options.merge(visible: :all))
    while_visible(ff, make_visible) { |el| el.set(paths) }
  else
    (file_field || find(:file_field, locator, **options)).set(paths)
  end
end
#check([locator], **options) ⇒ Capybara::Node::Element

Find a descendant check box and mark it as checked. The check box can be found via name, id, test_id attribute, or label text. If no locator is provided this will match against self or a descendant.

page.check('German')

el.check()
150
151
152
# File 'lib/capybara/node/actions.rb', line 150

def check(locator = nil, **options)
  _check_with_label(:checkbox, true, locator, **options)
end
#choose([locator], **options) ⇒ Capybara::Node::Element

Find a descendant radio button and mark it as checked. The radio button can be found via name, id, test_id attribute or label text. If no locator is provided this will match against self or a descendant.

page.choose('Male')

el.choose()
122
123
124
# File 'lib/capybara/node/actions.rb', line 122

def choose(locator = nil, **options)
  _check_with_label(:radio_button, true, locator, **options)
end
#click_button([locator], **options) ⇒ Capybara::Node::Element

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, name, test_id attribute, value, or title. <button> elements can also be found by their text content, and image <input> elements by their alt attribute.

57
58
59
# File 'lib/capybara/node/actions.rb', line 57

def click_button(locator = nil, **options)
  find(:button, locator, **options).click
end
#click_link([locator], **options) ⇒ Capybara::Node::Element

Finds a link by id, test_id attribute, text or title and clicks it. Also looks at image alt text inside the link.

41
42
43
# File 'lib/capybara/node/actions.rb', line 41

def click_link(locator = nil, **options)
  find(:link, locator, **options).click
end
#click_link_or_button([locator], **options) ⇒ Capybara::Node::Element Also known as: click_on

Finds a button or link and clicks it. See #click_button and #click_link for what locator will match against for each type of element.

25
26
27
# File 'lib/capybara/node/actions.rb', line 25

def click_link_or_button(locator = nil, **options)
  find(:link_or_button, locator, **options).click
end
#fill_in([locator], with: , **options) ⇒ Capybara::Node::Element

Locate a text field or text area and fill it in with the given text. The field can be found via its name, id, test_id attribute, placeholder, or label text. If no locator is provided this will operate on self or a descendant.

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

el.fill_in with: 'Tom'
88
89
90
91
92
# File 'lib/capybara/node/actions.rb', line 88

def fill_in(locator = nil, with:, currently_with: nil, fill_options: {}, **find_options)
  find_options[:with] = currently_with if currently_with
  find_options[:allow_self] = true if locator.nil?
  find(:fillable_field, locator, **find_options).set(with, **fill_options)
end
#select(value = nil, from: nil, **options) ⇒ Capybara::Node::Element

If from option is present, #select finds a select box, or text input with associated datalist, 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, test_id attribute, or label text. The option can be found by its text.

page.select 'March', from: 'Month'
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/capybara/node/actions.rb', line 201

def select(value = nil, from: nil, **options)
  raise ArgumentError, 'The :from option does not take an element' if from.is_a? Capybara::Node::Element

  el = from ? find_select_or_datalist_input(from, options) : self

  if el.respond_to?(:tag_name) && (el.tag_name == 'input')
    select_datalist_option(el, value)
  else
    el.find(:option, value, **options).select_option
  end
end
#uncheck([locator], **options) ⇒ Capybara::Node::Element

Find a descendant check box and uncheck it. The check box can be found via name, id, test_id attribute, or label text. If no locator is provided this will match against self or a descendant.

page.uncheck('German')

el.uncheck()
178
179
180
# File 'lib/capybara/node/actions.rb', line 178

def uncheck(locator = nil, **options)
  _check_with_label(:checkbox, false, locator, **options)
end
#unselect(value = nil, from: nil, **options) ⇒ Capybara::Node::Element

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, test_id attribute, or label text.

page.unselect 'March', from: 'Month'
230
231
232
233
234
235
# File 'lib/capybara/node/actions.rb', line 230

def unselect(value = nil, from: nil, **options)
  raise ArgumentError, 'The :from option does not take an element' if from.is_a? Capybara::Node::Element

  scope = from ? find(:select, from, **options) : self
  scope.find(:option, value, **options).unselect_option
end

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4