RspecとCapybaraを使用しています。
checkbox
を確認するステップを作成するにはどうすればよいですか?値でcheck
を試しましたが、checkbox
が見つかりません。私は実際には異なる値を持つ同じIDを持っているので、何をすべきかわからない
コードは次のとおりです。
<input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="61" name="cityID">
<input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="62" name="cityID">
<input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="63" name="cityID">
私は次のことがうまくいったことがわかりました:
# Check
find(:css, "#cityID[value='62']").set(true)
# Uncheck
find(:css, "#cityID[value='62']").set(false)
同じidで複数の要素を作成しないことをお勧めします。そうすることで(だけでなく)checkboxをエレガントに簡単にチェック/チェック解除できます。
check 'cityID'
uncheck 'cityID'
同じIDを持つ複数の要素を避けることができず、チェックボックス特定の値をチェックする必要がある場合、彼はそうすることができます
find(:css, "#cityID[value='62']").set(true)
find(:css, "#cityID[value='62']").set(false)
capybara入力操作の詳細については、こちらをご覧ください ここ
Capybaraテストを実行すると、page
オブジェクトが取得されました。これは、チェックボックスのチェック/チェック解除に使用できます。 @buruzaemonがすでに述べたように:
名前、ID、またはラベルテキストでチェックボックスを見つけてチェックします。
Htmlに次のようなチェックボックスがあると仮定します。
<label>
<input type="checkbox" value="myvalue" name="myname" id="myid">
MyLabel
</label>
これは次の方法で確認できます。
page.check('myid')
page.check('MyLabel')
page.check('myname')
チェックを外すのは、page.uncheck
メソッドを使用するのと同じです。
最初に フォーム要素に一意のid
sを与える が必要かもしれません。
しかし、Capybaraとチェックボックスに関しては、 Capybara :: Node :: Actions#check instance method を使用すると、名前、ID、またはラベルテキストでチェックボックスを検索およびチェックできます。
ボックスがテキストに関連付けられている場合、たとえば「オプション3」、それからcapybara 3.0.3
の時点でできること
check 'Option 3'
私はこれが古い質問であることを知っていますが、私はこれを自分で取り組んでおり、上記のすべてを試しましたが、これが最終的に私のために働いたものです:
find("input[type='checkbox'][value='#{cityID.id}']").set(true)
これが誰かに役立つことを願っています。 Capybara 2.4.4を使用しています。
見つけにくい場合は、:cssの代わりに:xpathを使用することもできます。
find(:xpath、 '//*[@id="example"]').set(true)
Chrome(および他のブラウザ)では、「要素を検査」できます。関心のある要素を右クリックすると、xpathがわからない場合は「copy xpath」が表示されます。今やる。
.set(true)が機能しなかったため、.clickを呼び出す必要がありました。
find(...).click
この例では、すべてのチェックボックスがチェックされていないことも確認できます。
all( 'input [type = checkbox]')。each do | checkbox | checkbox.should_not be_checked end
古いトピックですが、別の解決策は次のとおりです。
check('Option 3', allow_label_click: true)
check find(".whenever input")[:id]
これにより、カピバラはその入力に接続されたイベントリスナーを待機するようになると思います。待機しないと、場合によっては苦痛になります。その入力にIDがない場合は、別のプロパティを選択します(1つでなければなりません)...