Sha256: 3a84e9a8cf70b59f621b42bf7fe910d8e3e204a93e73d93c17449095363f7c33

Contents?: true

Size: 1.57 KB

Versions: 21

Compression:

Stored size: 1.57 KB

Contents

module Selenium
  module WebDriver
    class Wait

      DEFAULT_TIMEOUT  = 5
      DEFAULT_INTERVAL = 0.2

      #
      # Create a new Wait instance
      #
      # @param [Hash] opts Options for this instance
      # @option opts [Numeric] :timeout (5) Seconds to wait before timing out.
      # @option opts [Numeric] :interval (0.2) Seconds to sleep between polls.
      # @option opts [String] :message Exception mesage if timed out.
      # @option opts [Array, Exception] :ignore Exceptions to ignore while polling (default: Error::NoSuchElementError)
      #

      def initialize(opts = {})
        @timeout  = opts.fetch(:timeout, DEFAULT_TIMEOUT)
        @interval = opts.fetch(:interval, DEFAULT_INTERVAL)
        @message  = opts[:message]
        @ignored  = Array(opts[:ignore] || Error::NoSuchElementError)
      end


      #
      # Wait until the given block returns a true value.
      #
      # @raise [Error::TimeOutError]
      # @return [Object] the result of the block
      #

      def until(&blk)
        end_time = Time.now + @timeout
        last_error = nil

        until Time.now > end_time
          begin
            result = yield
            return result if result
          rescue *@ignored => last_error
            # swallowed
          end

          sleep @interval
        end


        if @message
          msg = @message.dup
        else
          msg = "timed out after #{@timeout} seconds"
        end

        msg << " (#{last_error.message})" if last_error

        raise Error::TimeOutError, msg
      end

    end # Wait
  end # WebDriver
end # Selenium

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
selenium-webdriver-2.45.0 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.45.0.dev3 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.45.0.dev2 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.45.0.dev lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.44.0 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.44.0.dev lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.43.0 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.42.0 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.41.0 lib/selenium/webdriver/common/wait.rb
browserstack-webdriver-2.40.1 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.40.0 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.40.0.rc2 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.40.0.rc1 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.39.0 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.38.0 lib/selenium/webdriver/common/wait.rb
browserstack-webdriver-0.0.22 lib/selenium/webdriver/common/wait.rb
browserstack-webdriver-0.0.1 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.37.0 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.35.1 lib/selenium/webdriver/common/wait.rb
selenium-webdriver-2.35.0 lib/selenium/webdriver/common/wait.rb