Capybara find_link给出了模糊的匹配错误

时间:2015-01-18 22:08:08

标签: ruby-on-rails capybara

<ul>
    <% @topic.contents.each do |content| %>
      <li>
        <%= content.content %> <%= link_to "Edit", edit_content_path(content) %> <br><br>
      </li>
    <% end %>
</ul>

我需要使用Capybara进行测试。我尝试在我的测试文件中输入:

 test "there is an edit link on the show page" do
    click_link "Enter"
    click_link "Ruby"
    assert find_link("Edit").first.visible?
 end

但它最终给了我一个信息:

 1) Error:
VisitorFindContentTest#test_there_is_an_edit_link_on_the_show_page:
Capybara::Ambiguous: Ambiguous match, found 2 elements matching link "Edit"
    test/integration/visitor_find_content_test.rb:44:in `block in <class:VisitorFindContentTest>'

我还能做什么?可以做些什么?我应该做些什么来使我的每个编辑链接都是唯一的吗?或者是否有一个水豚测试方法,只是寻找编辑链接的第一次出现?

1 个答案:

答案 0 :(得分:0)

:id添加:classcontent具体内容,如下所示:

<%= content.content %> <%= link_to "Edit", edit_content_path(content), id: "content_#{content.id}" %> <br><br>

<%= content.content %> <span id: "content_#{content.id}"><%= link_to "Edit", edit_content_path(content) %></span> <br><br>

然后您可以使用此ID单击链接,如下所示(使用上面的第二个选项):

content = Content.first # or some way of finding the required content object  
within("#content_#{content.id}") do
  click_link("Edit")
end