I called the function I wrote "wait_for", though I like your 
until_with_timeout method that uses yield better.

Then we could do something like:

wait_for(10) { ie.button(:value, 'OK') }

or just do it as a function like

wait_for( ie.button(:value, 'OK'), 10 )

We could just use your until_with_timeout as is, too:

until_with_timeout(10) { ie.button(:value, 'OK').exists? }

I've been using that already to wait for AJAX events to complete by 
watching for a "spinner" to appear and then disappear:

          # wait for "Updating" spinner to appear
          Watir::until_with_timeout(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
          Watir::until_with_timeout(30) do
            @ie.div(:id, 'pnlLoading').document.style.invoke('display') 
== 'none' ||
              @ie.div(:id, 
'pnlLoading').document.style.invoke('visibility') == 'hidden'
          end

We may wish to make it a bit more "visible" though, so it can be used 
without the "Watir::" at the front.

David

Bret Pettichord wrote:
> So, i think everyone can at least agree that it would be nice to have 
> a method on Watir elements that would not return until the element 
> appeared on a page. E.g.:
>
>   ie.button(:value, "OK").dont_return_until_this_element_exists
>
> This would be analogous to the existing ie.wait method, except that 
> that waits for the page to load the browser to no longer be busy.
>
> The only thing is -- what should it be called?
>
> Some ideas...
>
>   ie.button(:value, "OK").wait_until_exists?
>   ie.button(:value, "OK").wait_til_exist?
>   ie.button(:value, "OK").wait
>   ie.button(:value, "OK").ever_exist?
>
> Bret

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

Reply via email to