The issue I am facing is some times the elements take longer than expected
to appear on the page. Watir tries to interact with them before they load
and fails. I am aware of wait_until_present and when_present methods, but
they fail in the scenario I am working on. I have a table that
auto-populates rows from the database, but occasionally it takes well over
10 seconds due to performance issues on server or client side.
I want to extract text from the first row when it is present, but sometimes
the row element passes my sleep_until_present test, but no text is
extracted from the row. Here is my simple 2 step approach with
sleep_until_present() method.
1. Wait until element is !nil.
2. Wait until element is present.
def sleep_until_present(element_name)
sleep_timer = 0
nil_timer = 0
found = nil
while sleep_timer < 60
# Sleep 30s if element is nil
while !element_name && nil_timer < 30
break if element_name != nil
$log.info "Element is nil. Waiting..."
sleep(1)
nil_timer += 1
end
if element_name.present?
if element_name.locate # If located
found = element_name.flash
return true if found
end
end
sleep(1) # sleep until element is present
# Get last 100 chars which includes the element ID
element_id = element_name.inspect[-95..-1]
$log.info "(#{sleep_timer+1}) Waiting for -> #{element_id}"
sleep_timer += 1
end
return false
end
This may not be the best approach, but I am interested in learning how I
can approach such situations in a better way.
P.S. New to automated testing. Any constructive criticism is welcome!
--
--
Before posting, please read http://watir.com/support. In short: search before
you ask, be nice.
[email protected]
http://groups.google.com/group/watir-general
[email protected]
---
You received this message because you are subscribed to the Google Groups
"Watir General" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.