水豚的访问无缘无故

时间:2012-11-02 10:36:16

标签: ruby-on-rails selenium cucumber capybara

我们有一个用于铁轨项目的大型黄瓜套件。它都是水豚,主要是通过Firefox。

最近我们开始经历一次失败,我正在努力思考。这是它的样子:

  • 在某些时候(总是一样),capybara visit在尝试加载页面时陷入困境,而capybara最终会超时寻找任何正在寻找的元素(见下面的跟踪);所有其他功能的后续访问也会超时;
  • 如果它发生的功能独立运行,问题就会消失;
  • 如果在失败之前粘贴调试器(binding.pry),问题就会消失;
  • 当它被卡住时,如果我在firefox地址栏中输入,请求立即通过并且测试继续并且完成没有任何问题。

一个可能相关或不相关的细节:我们正在使用多个会话(capybara using_session),因此在失败时有三个firefox实例。但话说回来,有三个例子在此之前愉快地过去了。

同样的行为出现在我的伴侣的机器上。

rails日志中没有任何可疑之处。没有迹象表明该请求正试图通过。

OSX 10.8.2,ruby 1.9.3,rails 3.2.6,sqlite3,最新的capybara / selenium。


错误堆栈跟踪:

  Timeout::Error (Timeout::Error)
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1293:in `request'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:745:in `start'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1284:in `request'
  (eval):2:in `has_css?'
  ./features/step_definitions/home_page_steps.rb:70:in `/^I am taken to the products page on the retailer site$/'
  features/home_page.feature:21:in `Then I am taken to the products page on the retailer site'
  Timeout::Error (Timeout::Error)


修改

bundle update似乎让它消失了


编辑2

如果您遇到类似的问题且使用的是FireBug(水豚/萤火虫),请尝试禁用它。


编辑3

我想到,既然我们已经从webrick转为thin(在测试/开发中),那么这种情况从未发生过。就像在Gemfile中添加gem 'thin'一样简单。可能值得一试。

1 个答案:

答案 0 :(得分:2)

bundle update似乎让它消失了