【问题标题】:Condition not satisfied in For loop using a List Collection使用列表集合的 For 循环中不满足条件
【发布时间】:2022-01-06 03:26:03
【问题描述】:

我正在尝试验证网页上表格中的列是否在所有行中都显示了“常规”一词。下面是我试图执行的代码。当我在 IntelliJ 中运行下面的代码时,我得到条件不满足的失败。将 == 更改为 equals 并不能解决问题。我在这里做错了什么?

List‹WebElement› tdCollection = driver. findElements(By.xpath("//table[@class='jsgrid-table']"))
for (WebElement element : tdCollection) {
element.getText()=="Regular"
}

【问题讨论】:

  • 你能用stacktrace显示完整的错误信息吗?
  • element.getText()=="Regular" 作为独立声明没有任何意义。
  • 是声明吗?一个布尔表达式。
  • 您可以使用以下检查字符串匹配为element.getText().equalsIgnoreCase("Regular")

标签: java list selenium for-loop collections


【解决方案1】:

如果这个 xpath

//table[@class='jsgrid-table']

在行中表示所有 Regular 术语,那么下面的 代码 应该适合您。

另外,您可以设置OR 条件来检查Regularregular。 此外,如果您使用与 Selenium 集成的 TestNG,则可以使用以下断言。

List<WebElement> tdCollection = driver.findElements(By.xpath("//table[@class='jsgrid-table']"));
for (WebElement element : tdCollection) {
        if (element.getText().equals("Regular") || element.getText().equals("regular")) {
            System.out.println("Regular or regular is present");
            Assert.assertTrue(true);
        }
    }

【讨论】:

  • 我正在使用 Geb/Groovy,所以它不喜欢 Assert 行,所以我最终将其更改为 else 失败。见下文 List tdCollection = driver.findElements(By.xpath("//table[@class='jsgrid-table']")); for (WebElement element : tdCollection) { if (element.getText().equals("Regular") || element.getText().equals("regular")) { System.out.println("Regular or regular 存在"); } else { false } 现在,当我运行它时,我得到以下结果: 存在常规或常规,然后是条件不满足。我不明白为什么。
猜你喜欢
  • 1970-01-01
  • 2012-02-21
  • 2021-08-22
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2018-03-25
相关资源
最近更新 更多