在selenium的下拉框中获取当前选定的选项

时间:2011-12-28 17:50:59

标签: c# selenium webdriver

我有一个与此类似的下拉列表:

<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>

现在在selenium中,我想确保在页面加载时默认选择-- Please select --

通过Google搜索,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:我正在使用selenium webdriver
pps:我遇到了selectLocator等各种答案,但要么是php / java,要么在我的命名空间中找不到它们......

1 个答案:

答案 0 :(得分: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);