1. ホーム
  2. ruby

[解決済み] Capybara 2.0にアップグレードした後、アイテムリストの最初のリンクをクリックする方法は?

2022-06-08 13:55:23

質問

この場合、最初のリンクはどのようにクリックすればよいのでしょうか。

<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

カピバラは、いくつかの .item を見つけると例外が発生します。私はCapybara 2のこの動作は非常に良いと考えています。