【问题标题】:How to verify sorting in selenium + java?如何验证 selenium + java 中的排序?
【发布时间】:2021-03-17 16:41:13
【问题描述】:

我需要测试按价格排序的商品:

        List<WebElement> elements2 = driver.findElements(By.className("price"));
    for (WebElement element : elements2) {
        System.out.println(element.getText());
    }

在这里我收集了列表中的所有值,现在我需要删除“грн”并将值转换为 int,然后以某种方式验证它们是否按应有的方式排序,但我不知道该怎么做: (

非常感谢您的帮助!

【问题讨论】:

    标签: java selenium selenium-webdriver junit automation


    【解决方案1】:

    您可以使用以下代码通过将价格转换为整数来验证价格是否已排序。 sorted() - 升序 sorted(Comparator.reverseOrder()) - 降序

    List<Integer> priceValues = elements2.stream()
                    .map(a->Integer.parseInt(a.getText().replaceAll("[^0-9 ]+", "")))
                    .collect(Collectors.toList());
    
            boolean isSorted = priceValues.equals(priceValues.stream().sorted().collect(Collectors.toList()));
    

    【讨论】:

      【解决方案2】:
          List<Integer> price = (List<Integer>) elements2.stream().map(c -> {
              WebElement a = (WebElement) c;
                             //you can add getText() also
              String value = a.getAttribute("textContent");
      
              int pricelocal = Integer.parseInt(value.replaceAll("[^0-9]", ""));
      
              return pricelocal;
      
          }).collect(Collectors.toList());
      
          System.out.println(price);
      

      以上代码行将创建一个仅包含价格的列表

      现在复制一个临时数组,对临时数组进行排序并验证排序后的临时数组和初始数组是否相等:

          List<Integer> priceTemp = new ArrayList<Integer>(price);
          Collections.sort(priceTemp, Collections.reverseOrder()); 
                  
          System.out.println(priceTemp.equals(price));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        • 2022-01-04
        • 2019-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-02
        相关资源
        最近更新 更多