Module: Capybara::WaitImage
- Included in:
- Node::Element
- Defined in:
- lib/capybara/wait_image.rb,
lib/capybara/wait_image/version.rb
Overview
Wait for image to load automatically
Constant Summary collapse
- VERSION =
"0.4.0"
Instance Method Summary collapse
- #_logger ⇒ Object
- #_stale_errors ⇒ Object
-
#_wait_for_image_loading ⇒ Object
rubocop:disable Metrics/MethodLength.
- #click(*keys, **options) ⇒ Object
- #hover ⇒ Object
Instance Method Details
#_logger ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/capybara/wait_image.rb', line 50 def _logger @_logger ||= if defined?(Rails) Rails.logger else Logger.new(File::NULL) end end |
#_stale_errors ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/capybara/wait_image.rb', line 9 def _stale_errors return @_stale_errors if defined? @_stale_errors @_stale_errors = [] if defined? ::Selenium::WebDriver::Error::StaleElementReferenceError @_stale_errors << ::Selenium::WebDriver::Error::StaleElementReferenceError end @_stale_errors << ::Ferrum::NodeNotFoundError if defined? ::Ferrum::NodeNotFoundError @_stale_errors << ::Capybara::Cuprite::ObsoleteNode if defined? ::Capybara::Cuprite::ObsoleteNode @_stale_errors end |
#_wait_for_image_loading ⇒ Object
rubocop:disable Metrics/MethodLength
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/capybara/wait_image.rb', line 21 def _wait_for_image_loading # rubocop:disable Metrics/MethodLength Timeout.timeout(Capybara.default_max_wait_time) do sleep 0.5 until evaluate_script(<<~JS) Array.prototype.every.call( document.querySelectorAll('img'), (e) => e.complete ) JS end rescue Timeout::Error _logger.debug "[capybara-wait_image]Timeout::Error" rescue Capybara::NotSupportedByDriverError # It comes here when you run it in rack-test, but you can ignore it rescue *_stale_errors _logger.debug "[capybara-wait_image]Stale Error" reload _wait_for_image_loading end |
#click(*keys, **options) ⇒ Object
40 41 42 43 |
# File 'lib/capybara/wait_image.rb', line 40 def click(*keys, **) _wait_for_image_loading super end |
#hover ⇒ Object
45 46 47 48 |
# File 'lib/capybara/wait_image.rb', line 45 def hover _wait_for_image_loading super end |