2016-12-03 4 views
0

Capybaraを使用して手動でページを記入していますが、問題が発生しています。Capybaraは、ページに表示されていても要素を検出できません。

それは、この行を実行しようとすると(私はfalseに見え設定も試してみました):

find(:css, "[value='Laundry In Building']", visible: true).set(true) 

それは次のエラーを取得します。私は、フィールドを参照してくださいので

Unable to find css "[value='Laundry In Building']" 

これは紛らわしいですテストが実行されているときのブラウザ。さらに、I出力page.bodyは、私は次の取得するとき:

<div class="listing-edit-cb-item"> 
    <input class="cb" id="building_features_3" name="features[]"value="Laundry In Building" type="checkbox" /> 
    <label for="building_features_3"> 
    <span class="cb"></span> 
    <span style="width: 200px; display: inline-block; font-size: 0.90em;">Laundry In Building</span> 
    </label> 
</div> 

なぜカピバラは、チェックボックス要素を検出するために何のテーブルではありません

答えて

1

あなたはチェックボックスに適用されたCSSを表示しませんが、実際にはページに表示されているチェックボックスではないと確信しています。あなたのブラウザのdevコンソールを使って実際にページに表示されているものを見てください。おそらくspan.cbの疑似要素を使ってチェックボックスをイメージに置き換え、複数のブラウザで同じように見えます。あなたはカピバラの最新リリースを使用している場合は、表示ラベルではなく、隠されている実際の入力をクリックしてボックスをチェックします

check('Laundry In Building', allow_label_click: true) # found by labels text 

または

check(option: 'Laundry In Building', allow_label_click: true) # found by checkbox inputs value property 

を行うことができます。古いバージョンを使用している場合は、ラベルを探してクリックする必要があります。何かのように

find(:css, 'label', text: 'Laundry In Building').click 
+0

ありがとうございます。私は現在あなたが提案したようなラベルをクリックしていますが、私の初期の解決策が機能しなかった理由を理解できませんでした。驚くばかり。 – Huy

+1

@Huyチェックボックス入力要素が実際にページに表示されないため、最初の解決策が機能しませんでした。そのため、この要素を直接表示することはできません(たとえ 'visible:false'などを使用して要素を見つけることができます)カピバラはまだ一般的にユーザーができなかったため、要素とやり取りすることはできません)。おそらく、ラベル内にあるspan.cbに画像が追加されているので、それをクリックするとチェックボックスも切り替わります。チェックボックスをシミュレートし、複数のブラウザで同じように見えるようにします。 –

関連する問題