その場合、最初のリンクをクリックする方法は次のとおりです。
<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
ベストアンサー1
以下を使用できます:
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 finds several .item
's so it raises an exception. I consider this behavior of Capybara 2 very good.