capybara-webkit中的未定义方法`invalid_element_errors'

时间:2012-06-15 07:38:40

标签: javascript cucumber capybara capybara-webkit

首先,我想指出我对此有点新意,希望这篇文章能够理解。

Gems:
  rails (2.3.11
  nokogiri (1.5.4)
  cucumber (1.1.9)
  capybara (1.1.2)
  copybara-webkit (0.12.1)

现在我正在做一个项目,我正在尝试使用黄瓜进行rails web应用程序的集成测试。 由于web应用程序在很大程度上依赖于javascript和ajax,我想使用可以处理这个问题的capybara驱动程序。 (我刚刚意识到:rake_test没有)但我不想一直弹出浏览器窗口,因为这需要时间。 所以我选择了capybara-webkit。 但是现在我改变了驱动程序,通过在我的env.rb中为capybara设置javascript驱动程序,我一直都会遇到一个恼人的错误:

    undefined method `invalid_element_errors' for #<Capybara::Driver::Webkit:0x9c50bf8> (NoMethodError)
  ./features/step_definitions/some_steps.rb:37

我在该行的代码:

    >> 35  select("something", :from => find("select[class='class_name']")[:id])
    >> 36  click_link('javascript_link')
    >> 37  click_link('another_javascript_link')

我在第35行使用了find,因为id是动态的。 现在似乎问题实际上是find方法,因为如果我在这一点上添加另一个已知id的find,那我就会在该行上输入相同的错误。

如何摆脱这个问题,以便使用capybara-webkit? 我听说过某个地方这是实际驱动程序中的一个问题,并且github masterbranch上有一个修复程序,你可以在某种程度上链接你的宝石吗? 如果是这样,任何人都可以解释如何做到这一点?

1 个答案:

答案 0 :(得分:2)

我也遇到了这个问题。这是一个capybara-webkit bug:0.12.1版本没有invalid_element_errors方法。

几个月前有一个拉动请求修复,但它没有合并(https://github.com/thoughtbot/capybara-webkit/pull/288)。现在他们已经在master分支中添加了方法,因此你必须使用git repository:

gem 'capybara-webkit', :git => 'git://github.com/thoughtbot/capybara-webkit'

尝试一下,看看它是否适合你:)。