Selenium WebDriver选择组合框项目?

时间:2011-08-03 09:48:23

标签: java selenium-webdriver jbehave

我们正在使用Selenium WebDriver和JBehave在我们的网络应用上运行“集成”测试。我有一个方法将值输入表单输入。

@When("I enter $elementId value $value")
public void enterElementText(final String elementId, final String value) {
    final WebElement webElement = webdriver.findElement(By.id(elementId));
    webElement.clear();
    webElement.sendKeys(value);
}

但是当我尝试使用它来选择下拉列表中的项目时(不出所料)会失败

  

java.lang.UnsupportedOperationException:您只能设置值   作为输入元素的元素

如何在组合中选择一个值?

4 个答案:

答案 0 :(得分:20)

这是怎么做的:

@When("I select $elementId value $value")
public void selectComboValue(final String elementId, final String value) {
    final Select selectBox = new Select(web.findElement(By.id(elementId)));
    selectBox.selectByValue(value);
}

答案 1 :(得分:8)

Selenium中的Support包包含您所需要的一切:

using OpenQA.Selenium.Support.UI;

SelectElement select = new SelectElement(driver.findElement( By.id( elementId ) ));
select.SelectByText("Option3");
select.Submit();

您可以通过NuGet将其作为单独的包导入:http://nuget.org/packages/Selenium.Support

答案 2 :(得分:4)

答案 3 :(得分:3)

Selenium范式是你应该模拟用户在现实生活中会做些什么。所以这可能是点击或导航键。

Actions builder = new Actions( driver );
Action  action  = builder.click( driver.findElement( By.id( elementId ) ) ).build();
action.perform();

只要你有一个工作选择器来提供给findElement,你应该没有问题。我发现CSS选择器对于涉及多个元素的事情来说是更好的选择。你有样本页吗?