8

我已经尝试修复这个错误很长时间了,但我似乎无法弄清楚它是什么。在此先感谢您的帮助!

我正在为带有 capybara 和 rspec 的 rails 应用程序编写测试,尝试单击导航栏中的元素,然后进行测试以确保页面正确,但似乎无论我如何告诉 capybara 单击该元素,它都可以找不到它。

   ...
  subject { page }

  describe 'when clicking Home link', :js do
    before do
      visit some_path
      find('a', text: "Home").click
    end
    it { should have_selector('title', text: 'bla bla bla') }
  end
  ...

我尝试了此代码的许多不同版本,包括

  click_link('Home'),
  click_on('Home'),
  find('a.header-link.header-link-home', text: 'Home').click,
  find_link(...).click,
  click_button(...)

等等,以及有和没有:js,以及在不同的“内部”语句中,但我总是得到 Capybara::ElementNotFound: Unable to find css "a"。我还尝试将 capybara 的默认等待时间增加到 5 秒。

这是我试图点击的元素(根据页面的源代码)

  <a class="header-link header-link-home" href="/">Home</a>

宝石版本:水豚 (1.1.4)、rspec (2.12.0)

非常感谢,我真的很感激!

4

2 回答 2

9

您的代码应该是正确的,我一直使用click_link 'Foobar'. 您是否尝试过添加一个

save_and_open_page

行后visit?它通常有助于我理解为什么水豚找不到东西。

于 2013-06-26T06:44:19.253 回答
0

事实证明,一些链接没有显示,因为我所在的页面没有正确加载,因为它没有任何数据。我在 localhost 服务器上打开它时看到了这个,但是 save_and_open 页面(正如 Ju Liu 建议的那样;谢谢!)可能会做同样的事情。我需要从已正确加载的不同页面开始,或者添加一些工厂并填充页面。

于 2013-06-26T17:14:06.900 回答