如何使用Selenium WebDriver(Selenium 2)从组合框中获取所选值?

Kor*_*gay 9 selenium-webdriver

假设我有这个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>
Run Code Online (Sandbox Code Playgroud)

所以这是一个组合框

id=superior 
Run Code Online (Sandbox Code Playgroud)

并且当前值已选中MyDivision.

使用Selenium WebDriver我试图获取所选值,但没有成功.

我试过了:

String option = this.ebtamTester.firefox.findElement(By.id(superiorId)).getText();
return option;
Run Code Online (Sandbox Code Playgroud)

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

请帮忙?

编辑:

WebElement comboBox = ebtamTester.firefox.findElement(By.id("superior"));
SelectElement selectedValue = new SelectElement(comboBox);
String wantedText = selectedValue.getValue();
Run Code Online (Sandbox Code Playgroud)

Mic*_*sta 16

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

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

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

using OpenQA.Selenium.Support.UI;
Run Code Online (Sandbox Code Playgroud)

编辑:

我想你,而不是你会使用的'司机'

IWebElement comboBox = this.ebtamTester.firefox.FindElement(By.Id("superior"));
Run Code Online (Sandbox Code Playgroud)


Rip*_*sim 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);
Run Code Online (Sandbox Code Playgroud)

由于目前选择MyDivision,上面的代码将打印"MyDivision"