Capybara 2.0 にアップグレードした後、アイテムリストの最初のリンクをクリックするにはどうすればいいですか? 質問する

Capybara 2.0 にアップグレードした後、アイテムリストの最初のリンクをクリックするにはどうすればいいですか? 質問する

その場合、最初のリンクをクリックする方法は次のとおりです。

<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.

おすすめ記事