【问题标题】:How do I use Watir::Waiter::wait_until to force Chrome to wait?如何使用 Watir::Waiter::wait_until 强制 Chrome 等待?
【发布时间】:2011-05-20 08:50:41
【问题描述】:

我试图告诉我的 watir 脚本等待一个 ajax 注入的登录框打开。我正在使用 watir-webdriver,并在 Chrome 中进行测试。我无法让wait_until 工作,如以下(简化)脚本中所述。

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?

Watir::Waiter 是仅限 IE 的类吗?或者我做错了什么,sleep 1 等待方法工作得很好。我是 Ruby 和 watir 的新手,我昨天才刚刚拿起这个,所以我有一半认为这是我的菜鸟的结果。

如果相关,我正在使用 mac (OSX v. 10.6.5)。

【问题讨论】:

    标签: ruby watir watir-webdriver


    【解决方案1】:

    先这样做:

    require "watir-webdriver/wait"
    

    然后试试这些:

    1

    Watir::Wait.until { ... }
    

    2

    browser.text_field(:id => 'username').when_present.set("name")
    

    3

    browser.text_field(:id => 'username').wait_until_present
    

    注意这里的“存在”是指“元素既存在又可见”。

    【讨论】:

    • 谢谢。这解决了它,也感谢您指出wait_until_presentwhen_present 方法。您向我展示的内容是否有在线资源?我的谷歌搜索已经很没用了,显然......
    【解决方案2】:

    你也可以用浏览器设置超时。它会等待700秒,像这样。

    client = Selenium::WebDriver::Remote::Http::Default.new
    client.timeout = 700 # seconds � default is 60 second
    ie=Watir::Browser.new:firefox, :http_client => client
    

    【讨论】:

      【解决方案3】:

      几周前我遇到了同样的问题。 关键是 Watir::Wait.until{} 只等待主页加载(主要在 Firefox 上测试)。 如果您有一些 JavaScript 代码加载其他组件,则无需等待。

      因此,唯一的解决方案是选择元素并显式等待它出现(使用方法 2 和 3)。

      【讨论】:

        猜你喜欢
        • 2011-10-06
        • 2018-05-04
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 2023-01-30
        • 1970-01-01
        • 2012-04-09
        • 1970-01-01
        相关资源
        最近更新 更多