I'm trying to tell my watir script to wait for an ajax-injected login box to open up. I am using watir-webdriver, and testing in Chrome. I cannot get wait_until
to work, as commented in the below (simplified) script.
require "rubygems"
require "watir-webdriver"
b = Watir::Browser.new(:chrome)
site = "www.example.com"
b.goto site
puts "Click on Sign In button"
b.link(:id, 'btnLogin').click
puts "Waiting for the username/password dialog to show up"
# Below line does *not* work
# Throws this error: "uninitialized constant Watir::Waiter (NameError)"
Watir::Waiter::wait_until { b.text_field(:id, 'username').exists? }
# Below line does *not* work
# Throws this error: "undefined method `wait_until' for main:Object (NoMethodError)"
wait_until { b.text_field(:id, 'username').exists? }
# Below line *does* work, but I don't want to use it.
sleep 1 until b.text_field(:id, 'username').exists?
Is Watir::Waiter
an IE-only class? Or what am I doing wrong, the sleep 1
wait method works just fine. I am new to Ruby and watir, I literally just picked this up yesterday so I'm half expecting this to be a result of my noobaciousness.
In case it is relevant, I am working on a mac (OSX v. 10.6.5).
Do this first:
require "watir-webdriver/wait"
Then try these:
Watir::Wait.until { ... }
browser.text_field(:id => 'username').when_present.set("name")
browser.text_field(:id => 'username').wait_until_present
Note that "present" here means "the element both exists and is visible".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With