Как проверить, что весь столбец имеет одинаковые значения - PullRequest
1 голос
/ 05 июля 2019

Мне нужно убедиться, что столбец в веб-таблице содержит одинаковое значение для всех строк.

Я немного программировал, но ищу информацию о том, как улучшить производительность:

  • Я пробовал цикл for, используя метод getText для каждой строки и сравнивая значение с ожидаемой строкой:
      List<WebElement> rows = driver.findElements(By.xpath(xxxx))

      for(WebElement e : rows) {
          if(e.getText() != expectedString) {
              throwError
          }
      }
  • Я также пробовал Java-потоки и лямбда-выражения, однако в конце часть Collector обрабатывает много времени:
        List<String> fetchedValues = rows
           .stream()
           .filter(e -> e.getText() != expectedString)
           .collect(Collectors.toList());

Я хотел бы получить информацию, если хотя бы одна из строк не содержит ожидаемой строки.

Есть ли способ, например, с Java, чтобы прочитать все значения в данном столбце и загрузить его в ArrayList сразу?

1 Ответ

1 голос
/ 05 июля 2019

Вы можете попробовать метод 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();

    }
...