如何使用页面对象模型(Webdriver + Java + JUnit)断言 "select" 列表具有值或可见文本?

How assert that "select" list has value or visible text using Page Object Model (Webdriver + Java + JUnit)?

public Select select;
public Select getSelect(WebElement element) {
    select = new Select(element);
    return select;
}

这是一个函数,我将在测试中使用它来断言 select 具有文本可见的元素,但我不知道如何断言 select 具有该元素,我认为有更好的方法来做到这一点

@FindBy(id = "...")
WebElement = mainSelect;

public void assertSelectHasElement(String string) {
    getSelect(mainSelect);
    select.selectByVisibleText(string);
    Assert...?
}

你可以使用List<WebElement> allOptions = select.getOptions();得到Select的所有选项,然后遍历它们直到找到(或找不到)选项,例如:

@FindBy(id = "...")
private WebElement mainSelect;

public void assertSelectedValue(String value)
    select = getSelect(mainSelect);
    List<WebElement> options = select.getOptions();
    boolean optionExists = false;
    for (WebElement e : options) {
        if (e.getText().equals(value)) {
           optionExists = true;
           break;
        }
    }
    assertTrue("Option x should exist", optionExists);
}

如果下拉列表中只有一个选定值,以下方法会有所帮助。

//method to assert selected value in dropdown
public void assertSelectedValue(String expectedSelectedValue){

    WebElement option = getSelect(webelement).getFirstSelectedOption();
    String actualSelectedItem = option.getText();
    Assert.assertEquals(actualSelectedItem, expectedSelectedValue);
}

//method to select options by visible text in dropdown
public void selectDropdownOption(String optionToSelect){
    getSelect(webelement).selectByVisibleText(optionToSelect);
}

如果在下拉列表中选择了多个选项,则使用 katrihpl 在另一个答案中提供的逻辑。