module Capybara::Selenium::Node::FileInputClickEmulation
Public Instance Methods
Source
# File lib/capybara/selenium/extensions/file_input_click_emulation.rb, line 5 def click(keys = [], **options) super rescue Selenium::WebDriver::Error::InvalidArgumentError return emulate_click if attaching_file? && visible_file_field? raise end
Calls superclass method
Private Instance Methods
Source
# File lib/capybara/selenium/extensions/file_input_click_emulation.rb, line 19 def attaching_file? caller_locations.any? { |cl| cl.base_label == 'attach_file' } end
Source
# File lib/capybara/selenium/extensions/file_input_click_emulation.rb, line 23 def emulate_click driver.execute_script(<<~JS, self) arguments[0].dispatchEvent( new MouseEvent('click', { view: window, bubbles: true, cancelable: true })); JS end
Source
# File lib/capybara/selenium/extensions/file_input_click_emulation.rb, line 15 def visible_file_field? (attrs(:tagName, :type).map { |val| val&.downcase } == %w[input file]) && visible? end