【问题标题】:Get currently selected option in dropdown box in selenium在 selenium 的下拉框中获取当前选择的选项
【发布时间】:2012-01-29 08:55:58
【问题描述】:

我有一个类似的下拉菜单:

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

谷歌搜索,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,要么我在我的命名空间中找不到它们......

【问题讨论】:

  • 请参阅this answer,了解如何在 WebDriver 中创建 SelectElement。一旦你有了它,SelectedOption 属性将使你能够验证在页面加载时选择了什么。
  • @Bryan,非常感谢!这确实让我发现了一些我不知道的事情。

标签: c# selenium webdriver


【解决方案1】:

试试:

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

【讨论】:

  • 谢谢安德斯先生,正是我想要的!
  • 嘿安德斯你能帮我在 Java 上做同样的事情吗?
  • “ExecuteScript”的小写“e”?您可能只想发布一个新问题并链接到这个问题,然后熟悉 WebDriver for Java 的人可以帮助您。
猜你喜欢
  • 2011-09-19
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 2021-02-22
相关资源
最近更新 更多