基本上,我理解它是如何工作的,但我无法将它们结合在一起。
所以我对所有排序的元素都有cssSelector
。
我知道这些元素的确切数量(12)。我使用findElements()
来查找它们,它返回List。但List
是什么? - int
,String
?
Selector
可以直接获得数字的价格但却不知道我应该如何以及在何处使用该列表?
如何将它放在循环中以检查元素是否已排序?
我使用Selenide
,但如果您向我提供提示\指南如何在Selenium
中执行此操作,则可以。
谢谢!
答案 0 :(得分:1)
(这是在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());
}
现在您将拥有一个包含值的列表。我会给你排序,因为有很多方法你可以做到这一点。
答案 1 :(得分:1)
如果您想验证找到的价格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
希望它会帮助你...... :)
答案 2 :(得分:0)
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;
}