2016-08-01 19 views
0

私はクリックしようとしているチェックボックスイムのためのいくつかのHTMLがあります。Capybara/Poltergeist、隠しチェックボックスをクリックしますか?

<td class="surface center"> 
<div class="checkbox-inline checkbox-inline--empty"> 
<input type="hidden" value="0" name="stuff_check"> 
<input id="stuff_1" class="boolean optional" type="checkbox" name="stuff_1_checked" value="1" data-item="5"> 
<label class="optional" for="stuff_1">Checked</label> 
</div> 
</td> 

をそれはそれはおそらく別の要素をクリックポルターガイスト文句しかしちょうどclickを使用して、実際に作業を行うpage.find_by_id('id').trigger('click')を実行している場合:

カピバラを:: Poltergeist :: MouseEventFailed: 座標[-9468.5,6]でクリックが発射されませんでした。ポルターガイストは、この位置でCSSセレクタ ''を持つ別の要素を検出しました。対話しようとしている要素と重複している可能性があります。 の要素が重複していない場合は、 node.trigger( 'click')を試してみてください。

は、しかし、私はこれが原因で、それが「非表示」に設定されているのであるかもしれないと感じたので、それは同じ問題を与えたが、私は page.find_by_id('ID', :visible => false).clickをやってみました。

提案がありますか?私はトリガーを使用して知っているので( 'クリック')はお勧めしません。

答えて

1

ユーザーが画面に表示されない要素をクリックする方法がないため、非表示の要素を適切にクリックする方法はありません。
隠された要素のチェックボックス要素と同じname属性がないため、この種のセットアップで通常想定されるものであるため、例が混乱します。あなたが本当にやろうとしていることは、 "stuff_1"チェックボックスをチェックすることです(それはCSSを介して隠されています)。そして、あなたのアプリケーションのユーザが何をしなければならないのか、ラベルをクリックする必要があります。

page.find('label[for="stuff1"]').click 
+0

残念ながら、名前は同じですが、番号の代わりに[]の代わりにstuff_1の代わりにstuff [1]などの設定が異なります。私はあなたの答えの構文には少し混乱しています。 []さんは何をしていますか? HTMLの領域を狭める ''ラベル 'だけですか? – msmith1114

+0

それはbtw働いた!感謝します。私は私の問題は、私はidでクリックしようとしていたと思う...しかし、私は本当にラベル自体をクリックしようとしている必要があります。 – msmith1114

+1

これはCSSセレクタです。[]はCSS属性セレクタを指定しています。つまり、CSS –

1

は、私は本当にあなたがあなた自身の要素がある痛みの発見のトン節約できますようしかし、これを行うためにてこを使用することをお勧め

within('.checkbox-inline checkbox-inline--empty') do 
    check('#stuff_1') 
end 

を試してみてください。

+0

私はPryのことを聞いたことがありませんが、オートメーションにとってはどういうことがありますか?また、同じクラスの下にこれらのチェックボックスの倍数があるので、それがうまくいくかどうかは分かりません。私はそのIDを参照しながら何らかのことをすることができますか? – msmith1114

+0

http://pryrepl.org/ 基本的にgemfileに 'bundle install'を追加し、作業中のステップ定義に' binding.pry'を追加すると、その時点でスクリプトが停止します。コマンドラインからデバッグモードにアクセスできます。 コマンドに少し慣れていても、ステップ定義のバリエーションをコマンドラインに貼り付けることができます。少なくともページ要素が見つかったかどうかを確認することができます。以上。 – etusm

関連する問題