Sha256: a975b5c07eb28df7ea988e9d8ec9b59392c9723ca201a4429c5e1e82edffcdd8

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require 'selenium-webdriver'

module Aranha
  module Selenium
    class Session < ::SimpleDelegator
      module Wait
        WAIT_DEFAULT_TIMEOUT = 15

        def wait(timeout = nil)
          timeout ||= wait_default_timeout
          ::Selenium::WebDriver::Wait.new(timeout: timeout)
        end

        def wait_default_timeout
          WAIT_DEFAULT_TIMEOUT
        end

        # @param find_element_args [Array] Argujments for +Selenium::WebDriver::Find.find_element+.
        # @param timeout [Integer]
        # @return [Selenium::WebDriver::Element]
        def wait_for_click(find_element_args, timeout = nil, &block)
          element(*find_element_args).wait_for_click(timeout, &block).find!
        end

        def wait_for_element(find_element_args)
          wait.until { find_element(find_element_args) }
        end

        def wait_for_download(timeout = nil)
          initial_downloads = downloads.current
          yield
          new_downloads = []
          wait(timeout).until do
            new_downloads = downloads.current - initial_downloads
            new_downloads.any?
          end
          new_downloads.first
        end

        def wait_for_url_change(&block)
          previous_url = current_url
          block&.call

          wait.until { current_url != previous_url }
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aranha-selenium-0.11.0 lib/aranha/selenium/session/wait.rb