在这种情况下,如何单击第一个链接:

<div class="item">
  <a href="/agree/">Agree</a>
</div>
<div class="item">
  <a href="/agree/">Agree</a>
</div>

within ".item" do
  first(:link, "Agree").click
end

我得到这个错误:
Capybara::Ambiguous:
  Ambiguous match, found 2 elements matching css ".item"

而且没有within我得到这个错误:
Failure/Error: first(:link, "Agree").click
NoMethodError:
  undefined method `click' for nil:NilClass

最佳答案

您可以使用:

first('.item').click_link('Agree')

要么
first('.item > a').click

(如果您的默认选择器是:css)

您问题中的代码不适用于:
within ".item" do
  first(:link, "Agree").click
end

等效于:
find('.item').first(:link, "Agree").click

Capybara找到了几个.item,因此引发了异常。我认为 capybara 2的这种行为非常好。

10-04 11:57