Selenium:帮助验证元素是否按价格排序

Selenium: Help to verify that elements are sorted by price

基本上,我明白它是如何工作的,但我不能把它放在一起。 所以我对所有排序的元素都有 cssSelector

我知道这些元素的确切数量 (12)。我用findElements()全部找了,就returns列出来了。但是 List 是什么? - int, String

Selector 直接导致数字价格,但不明白我应该如何以及在何处使用该列表? 如何将它放入循环中以检查元素是否已排序?

我使用 Selenide,但如果您在 Selenium 中向我提供 tips\guides 如何做到这一点,那就没问题了。

谢谢!

(这是在硒中)

findElements() 将为您提供 WebElements 的列表。您可以对其中的每一项进行操作。

既然你想对它们进行排序,我假设你得到的元素中有某种文本。假设我们有这个 HTML.

<span>3</span>
<span>7</span>
<span>6</span>
<span>4</span>
<span>8</span>

findElements() 可以 return 所有这些跨度。所以我会得到一个 List 包含 5 WebElements。我可以用 getText() 得到这些 WebElements 的文本。示例:

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 提供此功能来验证 sortingOrdering class :-

假设您已经从包含 [1,2,3,4,5,6,7,8] 值的页面中获得价格 list,您可以使用 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 意味着你的 listsorted 中,否则 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;
}