ruby - Watir-webdriver 在询问元素是否存在时超时?

标签 ruby watir watir-webdriver

  • ruby 1.9.3p327
  • watir-webdriver 0.6.1

在全新的 Ruby 安装和全新的 Webdriver 安装中,我无法使用 wait 或present?包含不存在的元素,而不会导致非 Watir 超时错误。

在下面的示例中,id“gb_32”位于页面上,但处于隐藏状态。 ID“gb_50000”不存在。在这两种情况下“在场?”应该返回 false,但第二个在 60 秒后给我一个超时错误。 有什么想法为什么会发生这种情况吗?

    irb(main):014:0> b.link(:id,'gb_32').present?
    => false
    irb(main):015:0> b.link(:id,'gb_50000').present?
    Timeout::Error: Timeout::Error
            from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill'
            from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
            from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
            from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1293:in `request'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:745:in `start'
            from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1284:in `request'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:in `response_for'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:38:in `request'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:in `raw_execute'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:576:in `execute'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:544:in `find_element_by'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/search_context.rb:42:in `find_element'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/locators/element_locator.rb:247:in `by_id'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/locators/element_locator.rb:26:in `locate'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/elements/element.rb:384:in `locate'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/elements/element.rb:362:in `assert_exists'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/elements/element.rb:37:in `exists?'
            from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/elements/element.rb:296:in `present?'
    from (irb):15

谢谢。

最佳答案

我会将此添加为评论,但显然我还不能。您使用的是 Firefox 17 吗? Watir-webdriver 尚不兼容 17,因此如果您尝试恢复到 Firefox 16 并查看您的代码是否有效。据我所知,用于解决此兼容性问题的 watir-webdriver 更新将于下周发布。

关于ruby - Watir-webdriver 在询问元素是否存在时超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542880/

相关文章:

google-chrome - Chrome 询问 "Do you want google to save your password"后 Watir 挂起

mysql - Rails DB rake 任务运行但永不退出

java - 您可以从 Java 调用已编译的 JRuby 类吗?

ruby-on-rails - Ruby 比较两个字符串相似度百分比

ruby - Watir/ ruby : How to click on a text in dropdown in Ruby/Watir

ruby - 从仅与 Watir 具有多个类匹配的 div 中读取文本

ruby-on-rails - 更改 Simple_Form 提交按钮操作?

ruby - 使用 watir-webdriver 以全屏模式打开浏览器

ruby - 使用 watir-webdriver 打开多个线程导致 'Connection refused' 错误

selenium-webdriver - 在 watir 中自动下载文件