waitr 1136
Lets say I have the following action i want to perform
$ie.frame('Frame').table(:id,'ID).table(:index,1)[1][2].click
But, the this is frame heavy page, and wait sometimes doesn't play nice, so I
decide to do
element = $ie.frame('Frame').table(:id,'ID).table(:index,1)
wait_until(30) { element.exists? }
element[1][2].click
In my mind the above says, "keep looking for element until it exists, if it
doesn't fail". What happens though is .exists? throws an exception when it
can't find the element making the whole thing not work.
It seems that exists should never throw an exception, it should always be true
or false. Yes its there or no its not.
In watir.rb I think this is the offending code
# Returns whether this element actually exists.
def exists?
begin
locate if defined?(locate)
rescue WIN32OLERuntimeError
@o = nil
end
@o ? true: false
end
alias :exist? :exists?
The rescue doesn't seem to be broad enough. Lower down the stack trace i notice
that asset_exists is doing the following
unless ole_object
raise UnknownObjectException.new("Unable to locate object, using [EMAIL
PROTECTED] and [EMAIL PROTECTED]")
end
which exists can't handle. If in exists i make the rescue a 'catch all'
everything works like a champ (but i'm not sure what effects that has on the
system).
Hope that made sense.
_______________________________________________
Wtr-general mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/wtr-general