我有一个与此类似的下拉列表:
<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,要么在我的命名空间中找不到它们......
答案 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);