Method: RWebUnit::Driver#repeat_try

Defined in:
lib/rwebunit/driver.rb

#repeat_try(num_tries = @@default_timeout || 30, interval = @@default_polling_interval || 1, &block) ⇒ Object

Try the operation up to specified times, and sleep given interval (in seconds) Error will be ignored until timeout Example

repeat_try(3, 2) { click_button('Search' } # 3 times, 6 seconds in total
repeat_try { click_button('Search' } # using default 5 tries, 2 second interval


665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
# File 'lib/rwebunit/driver.rb', line 665

def repeat_try(num_tries = @@default_timeout || 30, interval = @@default_polling_interval || 1, &block)
  num_tries ||= 1
  (num_tries - 1).times do |num|
    begin
      yield
      return
    rescue => e
      # puts "debug: #{num} failed: #{e}"
      sleep interval
    end
  end

  # last try, throw error if still fails
  begin
    yield
  rescue => e
    raise e.to_s + " after trying #{num_tries} times every #{interval} seconds"
  end
  yield
end