10

假设我有这个 html 代码:

<select id="superior" size="1" name="superior">
    <option value=""></option>
    <option value="c.i.e.m.md.Division_1">DIVISION007</option>
    <option selected="selected" value="c.i.e.m.md.Division_$$_javassist_162_119">MyDivision</option>
    <option value="c.i.e.m.md.Division_121">MyDivision4</option>
    <option value="c.i.e.m.md.Division_122">MyDivision5</option>
</select>

所以这是一个组合框

id=superior 

并且当前值 MyDivision 被选中。

使用 Selenium WebDriver 我试图获得选定的值,但没有成功。

我试过:

String option = this.ebtamTester.firefox.findElement(By.id(superiorId)).getText();
return option;

但这会返回组合框中的所有值。

请帮忙?

编辑:

WebElement comboBox = ebtamTester.firefox.findElement(By.id("superior"));
SelectElement selectedValue = new SelectElement(comboBox);
String wantedText = selectedValue.getValue();
4

6 回答 6

19

这是用 C# 编写的,但将其转换为您正在使用的任何其他语言应该不难:

IWebElement comboBox = driver.FindElement(By.Id("superior"));
SelectElement selectedValue = new SelectElement(comboBox);
string wantedText = selectedValue.SelectedOption.Text;

SelectElement 要求您使用 OpenQA.Selenium.Support.UI,因此在顶部键入

using OpenQA.Selenium.Support.UI;

编辑:

我想对你来说,你会使用而不是“驱动程序”

IWebElement comboBox = this.ebtamTester.firefox.FindElement(By.Id("superior"));
于 2012-08-16T17:30:50.317 回答
9

在 Java 中,以下代码应该可以正常工作:

import org.openqa.selenium.support.ui.Select;
Select comboBox = new Select(driver.findElement(By.id("superior")));
String selectedComboValue = comboBox.getFirstSelectedOption().getText();
System.out.println("Selected combo value: " + selectedComboValue);

由于当前选择了 MyDivision,上述代码将打印“MyDivision”

于 2013-01-16T13:20:58.480 回答
4

selectedValue.SelectedOption.Text;将为您提供所选项目的文本。有谁知道如何获得选定的值。

要获得选定的值,请使用

selectedValue.SelectedOption.GetAttribute("value");
于 2013-08-30T15:53:31.183 回答
3

要根据标签选择选项:

Select select = new Select(driver.findElement(By.xpath("//path_to_drop_down")));
select.deselectAll();
select.selectByVisibleText("Value1");

要获得第一个选定的值:

WebElement option = select.getFirstSelectedOption()
于 2012-08-17T05:40:44.697 回答
3

在 C# 中使用 XPath

  string selectedValue=driver.FindElement(By.Id("superior")).FindElements(By.XPath("./option[@selected]"))[0].Text;
于 2013-03-01T13:57:07.683 回答
-1

根据@Micheal 的回答,使用以下命令会更容易:

string  selectedValue = new SelectElement(driver.FindElement(By.Id("Year"))).SelectedOption.Text;
于 2022-02-17T12:05:17.223 回答