Thanks for the feedback everyone,
Heres another way of approaching the problem. This takes the current wait_until
it makes it tolerant to exceptions. This seems to have the desired effect. I
don't think this should be used for any real code, just food for thought.
require 'watir'
include Watir
class Waiter
def wait_until
start_time = now
begin
until yield do
timed_out?(start_time, timeout)
end
rescue
if !timed_out?(start_time, timeout)
retry
end
end
end
# this is kind of odd, there is no true!
def timed_out?(incoming_start_time, incoming_timeout)
duration = now - incoming_start_time
if (duration) > incoming_timeout
raise Watir::Exception::TimeOutException.new(duration,
incoming_timeout),
"Timed out after #{duration} seconds."
else
sleep @polling_interval
return( false )
end
end
end
ie = IE.new
ie.goto('http://www.google.com')
p wait_until(2){ true }
p wait_until(2){ ie.button(:name, 'btnG').exists? }
begin
wait_until(2){ ie.frame('FakeFrame').exists? }
rescue Watir::Exception::TimeOutException
puts "Can't find element"
end
_______________________________________________
Wtr-general mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/wtr-general