Capybara::Ambiguous: Ambiguous match, found huga elements 〜 対処法
□解決したいこと
systemspecテストコードでformで画像を選択するため、
attach_file( 'tip_image',image_path, make_visible: true )
を実行したら
Capybara::Ambiguous: Ambiguous match, found 4 elements matching file field "tip_image" that is not disabled
というエラーが発生しました。こちらの解決方法をアップしたいと思います。
□原因
"tip_image"に該当するエレメントが4つ存在しますという意味のエラー内容です。
画像の選択に限らず、capybaraで選択したname属性が複数ある場合に「どのエレメントを選択しているのでしょうか」ということを聞かれています。
new.html.erbを見てみると
<div class="tip-images">
<div class="tip-image-main">
<p class="tip-image-main-text">画像(メイン)</p>
<div id="image-list">
<%= form.file_field :image, class: 'tip-image-main-img' %>
</div>
</div>
<div class="tip-image-sub">
<p class="tip-image-sub-text">画像(サブ)</p>
<div class="tip-image-sub-images">
<%= form.file_field :image, class: 'tip-image-sub-img' %>
<%= form.file_field :image, class: 'tip-image-sub-img' %>
<%= form.file_field :image, class: 'tip-image-sub-img' %>
</div>
</div>
</div>
となっており、
こちらに"tip_image"に該当するエレメントはありません。
検証ツールで調べてみると、
ありました。
name属性が tip[image]となっている要素が4つ存在します。
これが原因です。
□実行したこと
name属性が複数あることが原因ですので、画像投稿のフォームそれぞれに別々のname属性を付与してみます。
その上で、attachfileで当該name属性を指定することで、解決していこうと思います。
<%= form.file_field :image, class: 'tip-image-main-img', name: 'tip-image-main-img' %>
<%= form.file_field :image, class: 'tip-image-sub-img', name: 'tip-image-sub-img1' %>
<%= form.file_field :image, class: 'tip-image-sub-img', name: 'tip-image-sub-img2' %>
<%= form.file_field :image, class: 'tip-image-sub-img', name: 'tip-image-sub-img3' %>
としました。
次に、systemspecのテストコードのnameも変更します。
attach_file( 'tip-image-main-img',image_path, make_visible: true )
□結果
これでうまくいきました。
Author And Source
この問題について(Capybara::Ambiguous: Ambiguous match, found huga elements 〜 対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/arata_t_n/items/d053b49e2b2a9937e291著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .