从Selenium Webdriver中的下拉列表中选择选项时忽略区分大小写

时间:2016-02-05 20:02:54

标签: java selenium-webdriver

使用selectByVisibleText忽略区分大小写,我无法从下拉菜单中进行选择。选项'案例是动态的。

我使用的示例代码:

public static void setDropdownValue(By fieldId, String fieldValue) {
    Select dropDown = new Select(driver.findElement(fieldId));
    dropDown.selectByVisibleText(fieldValue);
}

有没有办法可以从忽略案例的菜单中选择选项。

由于

2 个答案:

答案 0 :(得分:2)

使用selectByVisibleText(text)是不可能的,但如果您仍想以某种方式执行此操作。使用这样的东西:

public static void setDropdownValue(By fieldId, String fieldValue) {
Select dropDown = new Select(driver.findElement(fieldId));
int index = 0;
    for (WebElement option : dropDown.getOptions()) {
        if (option.getText().equalsIgnoreCase(fieldValue))
            break;
        index++;
    }
    dropDown.selectByIndex(index);
}

要添加的最后一点,根据您的网页结构,有时option.getText()可能不会返回您需要的选项值。

在这种情况下,请在下拉列表中找到包含选项值的属性,然后使用option.getAttribute("the attribute name containing value")。通常,对于选择属性是'值',对于它,您必须使用option.getAttribute("value")

我希望它有所帮助:)

答案 1 :(得分:0)

,而不是selectByVisibleText(text),后者变为:

findElements(By.xpath(".//option[normalize-space(.) = " + Quotes.escape(text) + "]"));

参考: https://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/support/ui/Select.java#L112