【问题标题】:Why am I getting Timeout Error instead of element not present?为什么我收到超时错误而不是元素不存在?
【发布时间】:2013-10-09 07:35:27
【问题描述】:

我正在使用带有 selenium Webdriver 的页面对象 gem 测试 Web 应用程序。

在首页[Start page]我有几个RSpec验证。但我收到以下错误,而不是 RSpec 异常:

>Timeout::Error (Timeout::Error)
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill'
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1293:in `request'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:745:in `start'

有人遇到这个问题吗?

【问题讨论】:

    标签: ruby rspec selenium-webdriver timeoutexception page-object-gem


    【解决方案1】:

    我不熟悉 ruby​​,没有代码很难回答。但这是我的猜测:

    当您尝试访问 DOM 元素时,Selenium 使用explicit and implicit waits 的概念。所以我猜你在有问题的元素上使用了某种选择器,然后 selenium 尝试找到它。它似乎不存在,因此引发了超时。该行为是预期的。

    【讨论】:

    • 如果页面中不存在该元素,我应该会收到相应的错误消息。 [元素不存在]这个错误信息对我来说很奇怪。
    • 好吧,也许我错了,但你没有展示相关的代码部分,所以我只能猜测。
    • class StartPage include PageObject page_url "#{URL}" link :login, :link => "Sign IN" expected_element :login end 这是起始页代码。我在预期的元素行中收到错误。它应该抛出不存在的元素。但我收到超时错误。
    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    相关资源
    最近更新 更多