2016-03-25 15 views
0

ドロップダウンから値を選択しようとしています。選択するドロップダウンのIDが同じ場合にドロップダウンからオプションを選択する方法

<select id="selectFilter"> 
    <option value></option> 
    <option value="FEE">FEE</option> 
    <option value="PW">PW</option> 

私のコードは次のとおりです:

この

はHTMLでID selectFilterは二つの場所で同じであるので、私はエラーを取得する

select('PW', :from => 'selectFilter') 

Ambiguous match, found 2 elements matching "selectFilter" (Capybara::Ambiguous) 

必要なオプションを選択するにはどうしたらいいですか?

+0

定義上、HTMLドキュメントに複数の同一IDを設定することはできません。あなたはHTML生成を担当していますか、それとも野生ですか? –

答えて

0

本当に同じIDの要素が2つある場合は、HTMLを修正する必要があります。一方であなたは1、名前、プレースホルダ、またはラベルテキストとして、そのIDを選択して、その持つ別の選択している場合、あなたはidで、具体的見つけるだろうし、あなたの問題を解決することがあり

find('#selectFilter').find(:option, 'PW').select_option 

を行うことができます。

あなたが実際にそこですることができますスコープページの一部に初期のfind何とか

find('#some_section').select('PW', from: 'selectFilter') 

のような場合や、あなたのHTMLを修正することはできません/ IDを持つ2つの要素を持っているとすることを拒否した場合ページ上に「PW」オプションを1つのみ設定することができます

find(:option, 'PW').select_option 
+0

@トムウォールポール。両方のドロップダウンが同じIDを持っていて、どちらも "PW"オプションを持っていたのでどちらのオプションも使用できませんでした。私はあなたの2番目のオプションを使用しようとしましたが、 "CSS( '#ome_Section')を見つけることができないようなエラーが出ましたので、最後に" page.first(:option、 'PW')select_option " – RPD

+0

@RPD #some_sectionは、あなたが望むものだけを選択するページのセクションを選択する例のCSSセレクタでしたが、他のものはありません。あなたのページ構造/要素に基づいてカスタマイズすることができます。最初に動作しますが、page.first(:option、 'PW'、minimum:1).select_option'に最小:1オプションを追加して、オプションがまだページにない場合、または訪問がまだ読み込み終了していない場合、少し時間がかかります。カウントタイプのオプションが1つもない場合、最初はデフォルトで待機しません。 –

+0

最小:1オプションを追加しました。それは完全に働いています – RPD

0

HTML id属性はページ上で一意であると想定されます。彼らが衝突しないようにあなたのselectFilterの少なくとも1つの名前を変更する必要があります。

あなたが本当に/ユニークid秒を取得しませんすることはできません何らかの理由場合は、カピバラさんselectname sおよびlabelのを見つけるだろうが、あなたはそれが右の要素を検索するためのユニークな何かを提供しなければなりません。

関連する問題