如何验证整个列具有相同的值

时间:2019-07-05 10:09:52

标签: java selenium html-table tablecolumn

我需要验证Web表中的列是否包含所有行的完全相同的值。

我已经完成了一些编码,但是我正在寻找有关如何提高性能的信息:

  • 我尝试了for循环,对每一行使用getText方法并将其值与期望的字符串进行比较:
      List<WebElement> rows = driver.findElements(By.xpath(xxxx))

      for(WebElement e : rows) {
          if(e.getText() != expectedString) {
              throwError
          }
      }
  • 我还尝试了Java流和lambda表达式,但是最后,收集器部分要花费很多时间来处理:
        List<String> fetchedValues = rows
           .stream()
           .filter(e -> e.getText() != expectedString)
           .collect(Collectors.toList());

如果至少其中一行不包含预期的字符串,我想获取信息。

有没有办法,例如用Java读取给定列中的所有值并立即将其加载到ArrayList吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试here所述的forEach方法

这里有个例子:

    @Test
    public void sTest () {
        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.techbeamers.com/handling-html-tables-selenium-webdriver/");
        List<WebElement> el = driver.findElements(By.xpath("//*[@id='post-3500']/div[1]/div/p[3]/a"));
        el.forEach((e)-> {
            if(!e.getText().equals(expectedString)) throwError
        });
        driver.quit();

    }