【问题标题】:Capybara visit gets stuck for no reasonCapybara访问无缘无故卡住
【发布时间】:2012-10-23 00:18:18
【问题描述】:

我们有一个用于 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 切换到 Thin(在测试/开发中)之后,这从未发生过。就像在 Gemfile 中添加 gem 'thin' 一样简单。可能值得一试。

【问题讨论】:

  • 'bundle update capybara' 让它再次工作。感谢您提醒我更新 gem。
  • 请创建一个答案并将其标记为解决方案

标签: ruby-on-rails selenium cucumber capybara


【解决方案1】:

bundle update 似乎让它消失了

【讨论】:

  • 捆绑更新对我有用。我也必须进行捆绑清理。
猜你喜欢
  • 2019-05-21
  • 2016-08-22
  • 2021-12-26
  • 2012-01-17
  • 2017-04-11
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2018-06-14
相关资源
最近更新 更多