如何使用Selenium WebDriver java从下拉列表中获取所有选项

cha*_*har 2 java selenium webdriver selenium-webdriver dropdown

<select id="vehicleTypeName" class="custom-select" name="vehicleTypeName">
<option value="">-Select Style-</option>
<option value="Hatchback">Hatchback Cars</option>
<option value="Sedans">Sedan Cars</option>
<option value="MUV">MPV Cars</option>
<option value="Sport Utilities">SUV Cars</option>
<option value="Luxury Vehicles">Luxury Cars</option>
<option value="Hybrids">Hybrid Cars</option>
<option value="Minivans">Minivans</option>
<option value="Convertibles">Convertible Cars</option>
<option value="Coupe">Coupe Cars</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我已经使用此代码来验证选项

String label=driver.findElement(By.id("vehicleTypeName")).getText();

logger.info("Brand names are \t" + label );
Run Code Online (Sandbox Code Playgroud)

但它正在打印所有品牌,包括"-Select Style-"这个项目.但我不想打印这个"选择样式"值.但我想只验证品牌名称.请帮我解决一下这个.

dda*_*son 5

我刚刚给你写了一个快速功能.希望能帮助到你!

/**
 * Get all <code><option/></code> innerHTML attributes
 *
 */
List<String> getAllOptions(By by) {
    List<String> options = new ArrayList<String>();
    for (WebElement option : new Select(driver.findElement(by)).getOptions()) {
        String txt = option.getText();
        if (option.getAttribute("value") != "") options.add(option.getText());
    }
    return options;
}
Run Code Online (Sandbox Code Playgroud)

现在执行:

getAllOptions(By.id("vehicleTypeName"));
Run Code Online (Sandbox Code Playgroud)

将返回:

["Hatchback Cars", "Sedan Cars"...] // of course in List<> representation..
Run Code Online (Sandbox Code Playgroud)