【问题标题】:How to verify the whole column has the same values如何验证整列具有相同的值
【发布时间】:2019-11-15 23:10:42
【问题描述】:

我需要验证 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?

【问题讨论】:

  • 也可以考虑看看:stackoverflow.com/questions/513832/…
  • e.getText() != expectedString .equals() 比较字符串。
  • 试试这个:if(!e.getText().contains(expectedString))
  • 谢谢大家,我忘记了 equals / contains 方法。但是这里的问题更多:是否可以一次从 webelements 列表中获取文本值,我的意思是不必使用 for 循环?

标签: java selenium html-table tablecolumn


【解决方案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();

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2018-07-19
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2023-02-26
    相关资源
    最近更新 更多