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

时间:2016-07-01 11:45:00

标签: java selenium selenide

基本上,我理解它是如何工作的,但我无法将它们结合在一起。 所以我对所有排序的元素都有cssSelector

我知道这些元素的确切数量(12)。我使用findElements()来查找它们,它返回List。但List是什么? - intString

Selector可以直接获得数字的价格但却不知道我应该如何以及在何处使用该列表?  如何将它放在循环中以检查元素是否已排序?

我使用Selenide,但如果您向我提供提示\指南如何在Selenium中执行此操作,则可以。

谢谢!

3 个答案:

答案 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;
}