The class Selenium Select has 3 methods of different option selection:
Now,
In latest Selenium version 3.x or 4.x, Select class can be used to select an option from dropdown.
For example: There is a flavour dropdown where it require to select a flavour which contain name as Vanilla
.
WebElement flavour = driver.findElement(By.id("attribute178"));
Select select = new Select(flavour);
String expectedFlavourName = "Vanilla";
List<WebElement> allFlavourList = select.getOptions();
for (WebElement option : allFlavourList) {
String currentFlavourName = option.getText();
if (currentFlavourName.contains(expectedFlavourName)) {
select.selectByVisibleText(currentFlavourName);
}
}
My solution is to use xpath to find options that are children of the select. Any xpath method can be used to find the select; in this example I am finding the select by id.
List<WebElement> options = driver.findElements(By.xpath("//select[@id = 'selectId')]/option"));
for (WebElement option : options) {
if (option.getText().contains("DOLLAR")) {
option.click();
break;
}
}
After a little more thought I realize the option can be found entirely with xpath:
driver.findElements(By.xpath("//select[@id = 'selectId')]/option[contains(text(), 'DOLLAR')]")).click();