水豚的访问无缘无故

art*_*ave 9 selenium ruby-on-rails 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)
Run Code Online (Sandbox Code Playgroud)


编辑

bundle update 似乎已经让它消失了


编辑2

如果您遇到类似的问题并且正在使用FireBug(capybara/firebug),请尝试禁用它.


编辑3

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

art*_*ave 2

bundle update似乎让它消失了