Capybara :: ElementNotFound:无法找到css“a”

时间:2013-06-26 00:44:46

标签: ruby-on-rails rspec capybara

我一直在尝试修复此错误很长一段时间,我似乎无法弄清楚它是什么。在此先感谢您的帮助!

我正在为带有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:无法找到css“a”。我也尝试将capybara的默认等待时间增加到5秒。

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

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

Gem版本:capybara(1.1.4),rspec(2.12.0)

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

2 个答案:

答案 0 :(得分:9)

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

save_and_open_page

visit行之后?这通常有助于我理解为什么水豚无法找到东西。

答案 1 :(得分:0)

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