Method: Selenium::WebDriver::Wait#until

Defined in:
lib/selenium/webdriver/common/wait.rb

#until(&blk) ⇒ Object

Wait until the given block returns a true value.

Returns:

  • (Object)

    the result of the block

Raises:



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/selenium/webdriver/common/wait.rb', line 30

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

  until Time.now > end_time
    begin
      result = yield
      return result if result
    rescue Error::NoSuchElementError => 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