Sha256: 15788ccc816db5aa4baab7770d5f362488ae05e0d8ecb3675e8e5e8f68291345

Contents?: true

Size: 791 Bytes

Versions: 51

Compression:

Stored size: 791 Bytes

Contents

# frozen_string_literal: true

class Capybara::Selenium::Node
  module FileInputClickEmulation
    def click(keys = [], **options)
      super
    rescue Selenium::WebDriver::Error::InvalidArgumentError
      return emulate_click if attaching_file? && visible_file_field?

      raise
    end

  private

    def visible_file_field?
      (attrs(:tagName, :type).map { |val| val&.downcase } == %w[input file]) && visible?
    end

    def attaching_file?
      caller_locations.any? { |cl| cl.base_label == 'attach_file' }
    end

    def emulate_click
      driver.execute_script(<<~JS, self)
        arguments[0].dispatchEvent(
          new MouseEvent('click', {
            view: window,
            bubbles: true,
            cancelable: true
          }));
      JS
    end
  end
end

Version data entries

51 entries across 38 versions & 5 rubygems

Version Path
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/capybara-3.40.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb
capybara-3.40.0 lib/capybara/selenium/extensions/file_input_click_emulation.rb
capybara-3.39.2 lib/capybara/selenium/extensions/file_input_click_emulation.rb
capybara-3.39.1 lib/capybara/selenium/extensions/file_input_click_emulation.rb
capybara-3.39.0 lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.2.4 vendor/bundle/ruby/3.1.0/gems/capybara-3.36.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb
capybara-3.38.0 lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.2.3 vendor/bundle/ruby/3.1.0/gems/capybara-3.37.1/lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.2.2 vendor/bundle/ruby/3.1.0/gems/capybara-3.37.1/lib/capybara/selenium/extensions/file_input_click_emulation.rb
capybara-3.37.1 lib/capybara/selenium/extensions/file_input_click_emulation.rb
capybara-3.37.0 lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.2.1 vendor/bundle/ruby/3.1.0/gems/capybara-3.36.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.2.0 vendor/bundle/ruby/3.0.0/gems/capybara-3.36.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.2.0 vendor/bundle/ruby/2.7.0/gems/capybara-3.35.3/lib/capybara/selenium/extensions/file_input_click_emulation.rb
date_n_time_picker_activeadmin-0.1.2 vendor/bundle/ruby/2.6.0/gems/capybara-3.36.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb
date_n_time_picker_activeadmin-0.1.1 vendor/bundle/ruby/2.6.0/gems/capybara-3.36.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb
capybara-3.36.0 lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.1.7 vendor/bundle/ruby/2.7.0/gems/capybara-3.35.3/lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.1.7 vendor/bundle/ruby/3.0.0/gems/capybara-3.35.3/lib/capybara/selenium/extensions/file_input_click_emulation.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/capybara-3.34.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb