【问题标题】:How assert that "select" list has value or visible text using Page Object Model (Webdriver + Java + JUnit)?如何使用页面对象模型(Webdriver + Java + JUnit)断言“选择”列表具有值或可见文本?
【发布时间】:2018-10-21 16:32:22
【问题描述】:
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...?
}

【问题讨论】:

  • POM 是一种用于编写代码的模式,例如,在方法/函数中扭曲网页上的每个操作(按钮/字段等)。断言是另一回事。 Java 提供了 assert 语句,只需阅读文档即可。另外,如果您使用 TestNg,请阅读:toolsqa.com/selenium-webdriver/testng-reporters-asserts
  • 我知道 POM 是一种模式,在这个问题上我也没有遇到 POM 的问题,我不知道如何正确地为选择列表中的元素编写断言。我在问题标题中写了关于 POM 的文章,以说明为什么代码的结构像我指出的那样
  • 好的,查看我之前帖子的链接。这可能会有所帮助。

标签: java selenium-webdriver webdriver automated-tests assertion


【解决方案1】:

您可以使用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);
}

【讨论】:

  • 使用这个例子,我应该输入名为“mainSelect”的选择的WebElement?在for (WebElement e : options) 部分,“选项”发出红色光
  • options 是 select.getOptions() 的结果。编辑澄清。
【解决方案2】:

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

//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 的另一个答案中使用提供的逻辑。

【讨论】:

  • 使用了 testNG 断言。
  • 是的,我在选择列表中有多个选项,所以这个例子对我不起作用,但无论如何谢谢,我认为这个选项有时也会派上用场
猜你喜欢
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多