【问题标题】: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));