硒 Web驱动程序和下拉框

如果我想选择下拉框的选项,有几种方法可以做到这一点。我总是使用:

driver.findElement(By.id("selection")).sendKeys("Germany");

但这并不是每次都行得通。有时选择另一个选项。所以我用谷歌搜索了一下,发现这段代码每次都有效:

WebElement select = driver.findElement(By.id("selection"));
    List<WebElement> options = select.findElements(By.tagName("option"));
    for (WebElement option : options) {
        if("Germany".equals(option.getText()))
            option.click();
    }

但这真的很慢。如果我有一个很长的清单,里面有很多项目,这真的需要太多的时间。所以我的问题是,有没有一个解决方案,每次都有效并且速度很快?


答案 1

你可以试试这个:

IWebElement dropDownListBox = driver.findElement(By.Id("selection"));
SelectElement clickThis = new SelectElement(dropDownListBox);
clickThis.SelectByText("Germany");

答案 2

请尝试以下操作:

import org.openqa.selenium.support.ui.Select;

Select droplist = new Select(driver.findElement(By.Id("selection")));   
droplist.selectByVisibleText("Germany");