在 Selenium WebDriver 的日期选择器中查找值

Find a value inside a datepicker in Selenium WebDriver

我创建了一个方法,该方法从日期选择器中获取所有值并将其放入 List 类型的变量中。然后我做了一个 FOR 来寻找特定的一天,当我找到那一天时,我点击它。

现在我需要实现一个在最后一天无效时显示错误消息的例程。我正在使用 JOptionPane.showMessageDialog class 来显示错误。但问题是每次脚本进入IF测试值时都会出现提示,找不到。

public void campoRechamada(String dia) {
    driver.findElement(By.id("txtDtRechamada")).click();
    WebElement dateWidget = driver.findElement(rechamada);
    // List<WebElement> linhas = dateWidget.findElements(By.tagName("tr"));
    List<WebElement> colunas = dateWidget.findElements(By.tagName("td"));
    for (WebElement cell : colunas) {
        if (cell.getText().equals(dia)) {
            cell.findElement(By.linkText(dia)).click();
            break;
        } else {

            JOptionPane.showMessageDialog(null, "The date entered in the method is invalid: " + dia, "Erro",
                    JOptionPane.ERROR_MESSAGE);
        }
    }
}

Passage from the parameter to the method. Method that receives the parameter and validates whether the day is valid or not.

Datepicker

为循环添加一个布尔标志outsiet,并在找到日期时将其更改为true。

然后在for循环后检查flag是true还是false:

public void campoRechamada(String dia) {
    driver.findElement(By.id("txtDtRechamada")).click();
    WebElement dateWidget = driver.findElement(rechamada);
    // List<WebElement> linhas = dateWidget.findElements(By.tagName("tr"));
    List<WebElement> colunas = dateWidget.findElements(By.tagName("td"));

    boolean find = false;
    for (WebElement cell : colunas) {
        if (cell.getText().equals(dia)) {
            find = true;
            cell.findElement(By.linkText(dia)).click();
            break;
        }
    }

    if(find == false) {
        JOptionPane.showMessageDialog(null, "The date entered in the method is invalid: " + dia, "Erro",
                JOptionPane.ERROR_MESSAGE);
    }
}