基本上,我了解它是如何工作的,但我无法将它们组合在一起。所以我有cssSelector
所有排序的元素。
我知道这些元素的确切数量(12)。我findElements()
用来找到它们,它返回列表。但是List
呢?- int
, String
?
Selector
导致正确的数字价格,但不明白我应该如何以及在哪里使用该 List ?如何将其放入循环中以检查元素是否已排序?
我使用Selenide
,但如果你向我提供提示\指南如何做到这Selenium
一点就可以了。
谢谢!
(这是在硒中)
findElements()
将为您提供WebElements
. 您可以对其中的每一个执行操作。
既然你想对它们进行排序,我假设你得到的元素中有某种文本。假设我们有这个HTML
。
<span>3</span>
<span>7</span>
<span>6</span>
<span>4</span>
<span>8</span>
findElements()
可以返回所有这些跨度。所以我会得到一个List
包含 5 WebElements
。我可以WebElements
用getText()
. 例子:
List<Integer> values = new ArrayList<Integer>();
List<WebElement> elements = driver.findElements(By.cssSelector('span'));
for (WebElement element : elements) {
values.add(Integer.parseInt(element.getText());
}
现在您将拥有一个包含值的列表。我将把排序留给你,因为你可以通过很多方法来做到这一点。
如果您想验证找到的价格list
是否符合要求,请sorted
按以下方式使用:-
Guava提供了这个功能来sorting
通过它的Ordering
类进行验证:-
假设您已经list
从包含[1,2,3,4,5,6,7,8]
值的页面中获得了价格,您可以使用Guava库来验证该列表是否sorted
仅在一行中,如下所示:-
boolean isSorted = Ordering.natural().isOrdered(list);
System.out.println(isSorted);
或者
您也可以使用自己的generic
方法进行验证,如下所示:-
private static <T extends Comparable<? super T>> boolean isSorted(List<T> list){
for (int i = 0; i < list.size()-1; i++) {
if(list.get(i).compareTo(list.get(i+1))> 0){
return false;
}
}
return true;
}
boolean isSorted = isSorted(list);
System.out.println(isSorted);
注意: - 如果它打印true
意味着你list
是sorted
为了否则not
希望它会帮助你... :)
public boolean VerifyingSort() {
List<WebElement> theList=driver.findElements(By.xpath("//*[@id=\"qv-drop\"]/li"));
int FisrtfinalPrice=0;
String FirstPrice=driver.findElement(By.xpath("//*[@id=\"qv-drop\"]/li[1]/div[1]/div[2]/a/div[2]/div[1]")).getText();
FirstPrice=FirstPrice.replaceAll("[\\-\\?\\+\\.\\^:,\\\u20B9]","");
FirstPrice = FirstPrice.split(" ")[1];
FisrtfinalPrice=Integer.parseInt(FirstPrice);
for(int SortCheckNumber=2;SortCheckNumber<theList.size()-1;SortCheckNumber++) {
String nextPrice=driver.findElement(By.xpath("//*[@id=\"qv-drop\"]/li["+SortCheckNumber+"]/div[1]/div[2]/a/div[2]/div[1]")).getText();
nextPrice=nextPrice.replaceAll("[\\-\\?\\+\\.\\^:,\\\u20B9]","");
nextPrice = nextPrice.split(" ")[1];
int finalNextPrice=Integer.parseInt(nextPrice);
if(finalNextPrice>FisrtfinalPrice) {
System.out.println("notSorted");
return false;
}else {
FisrtfinalPrice=finalNextPrice;
}
}
System.out.println("allSorted");
return true;
}