我们有一个用于 Rails 项目的大型黄瓜套件。这都是水豚,主要是通过 Firefox。
最近我们开始经历失败,我正在努力解决问题。这是它的样子:
- 在某些时候(总是一样),capybara
visit
在尝试加载页面时卡住了,capybara 最终超时以查找正在寻找的任何元素(请参见下面的跟踪);每个其他功能中的每次后续访问也会超时; - 如果它发生的功能独立运行,问题就会消失;
- 如果在失败之前粘贴调试器(binding.pry),问题就会消失;
- 当它被卡住时,如果我在 Firefox 地址栏中按 Enter 键,请求会立即通过,测试会继续并完成,没有任何问题。
一个可能相关也可能不相关的细节:我们正在使用多个会话(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 (capybara/firebug),请尝试禁用它。
编辑 3
我突然想到,自从我们从 webrick 切换到瘦(在测试/开发中)之后,这从未发生过。gem 'thin'
就像在 Gemfile中添加一样简单。也许值得尝试一下。