2011-12-28 8 views
2

にドロップダウンボックスで現在選択されているオプションを取得します。今、セレンで私はこの1つに類似のドロップダウン持っているセレン

<select id="PlaceOfBirth"> 
    <option value="">-- Please select --</option> 
    <option value="1">Somewhere</option>  
    <option value="2">Somewhere else</option>  
    <option value="3">somewhere else again</option> 
</select> 

を、私は、ページのロードに、-- Please select --がデフォルトで選択される、ことを確認します。

グーグル・スルー、selecting by xpath and [selected="selected"]は有望でしたが、私のoptionsのどれもが始まる属性を選択していないため、使用できません。

だから、私はちょうどそのような最初の要素を選択することができ、代わりに、考えた:

driver.FindElement(By.XPath("//select[@id='PlaceOfBirth']/*[1]")); 
//the actual xpath being //select[@id='PlaceOfBirth']/*[1] 

これがうまく最初のオプションを返すんが、それは必ずしも選択された一つではありません。現在選択されているオプションが欲しいものであることを確認するにはどうすればいいですか (value="", text="-- Please select --")してください。

ありがとうございました。

PS:私は
PPS webdriverをセレンを使用しています:私はselectLocatorのような様々な答えに遭遇してきた、など彼らは、PHP/Javaのですか、私は私の名前空間でそれらを見つけることができないのどちらかでも...

+1

WebDriverで 'SelectElement'を作成する方法については、[この回答](http://stackoverflow.com/a/5296364)を参照してください。一度それがあれば、 'SelectedOption'プロパティはページロード時に選択されているものを確認することができます。 – Bryan

+0

@ブライアン、ありがとう!私が気付いていなかったいくつかのものに私を導いてくれました。 – LocustHorde

答えて

5

てみてください:

var selectedItemText = (string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].options[arguments[0].selectedIndex].text;", element); 
var selectedItemValue = (string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].options[arguments[0].selectedIndex].value;", element); 
var selectedItemIndex = (long)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].selectedIndex;", element); 
+0

アンダーズさん、ありがとうございました、まさに私が欲しかった! – LocustHorde

+0

Hey Anders Javaで同じことをするためにここでお手伝いできますか? – Srivastava

+1

"ExecuteScript"の小文字の "e"? 新しい質問を投稿してこの質問にリンクしたい場合は、WebDriver for Javaをよく知っている人がお手伝いします。 – Anders

関連する問題