That sounds great.  I didn't realize that was what you were talking about.

Thanks -andy


----Original Message Follows----
From: David Schmidt <[EMAIL PROTECTED]>
Reply-To: wtr-general@rubyforge.org
To: wtr-general@rubyforge.org
Subject: Re: [Wtr-general] Wait for control to exist
Date: Tue, 13 Jun 2006 14:28:41 -0700

Our solution is better than that.  Bret already has a method that I've
been using and it's generic enough that you can wait for just about
anything.  He's stated that he'll just be renaming it to "wait_for".

On a web scraper I have there is an AJAX request that fires when one of
the fields is changed.  When this happens, a graphical "spinner" image
appears to let you know it's making a request.  The spinner is always
there, but the DIV containing it gets changed from hidden to visible and
back again.

I'm able to wait for the style to change to visible and then wait for
the style to change to hidden (even though the DIV *always* exists) like
this (using the new wait_for() method name):

   # wait for "Updating" spinner to appear
   wait_for(5) do
     @ie.div(:id, 'pnlLoading').document.style.invoke('display') != 'none' 
&&
     @ie.div(:id, 'pnlLoading').document.style.invoke('visibility') != 
'hidden'
   end

   # wait for "Updating" spinner to hide
   wait_for(30) do
     @ie.div(:id, 'pnlLoading').document.style.invoke('display') == 'none' 
||
     @ie.div(:id, 'pnlLoading').document.style.invoke('visibility') == 
'hidden'
   end

The wait_for method will just keep trying the supplied block until the block
returns "true" or the timeout has passed (where it will throw an exception).

David


Andy Sipe wrote:
 > I'm not sure just exist is enough for what I'm talking about.
 >
 > If I have a span that already exists in the document and I do something 
that
 > causes an async request/update to the server then the span always exists 
so
 > saying:
 >
 > span(:id, ...).wait_for_exists?
 >
 > may blow right through without pausing because the span is there.
 >
 > Maybe something like
 >
 > span(:id, ...).wait_for_change('text', 'blah')
 >
 > where 'text' is the attribute i'm waiting to change and 'blah' is the 
value
 > I'm waiting for it to change to.
 >
 > So you could also do
 >
 > span(:id, ...).wait_for_change('exists?', true)
 >
 > -andy
 >
_______________________________________________
Wtr-general mailing list
Wtr-general@rubyforge.org
http://rubyforge.org/mailman/listinfo/wtr-general


_______________________________________________
Wtr-general mailing list
Wtr-general@rubyforge.org
http://rubyforge.org/mailman/listinfo/wtr-general

Reply via email to