1

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

我知道这些元素的确切数量(12)。我findElements()用来找到它们,它返回列表。但是List呢?- int, String?

Selector导致正确的数字价格,但不明白我应该如何以及在哪里使用该 List ?如何将其放入循环中以检查元素是否已排序?

我使用Selenide,但如果你向我提供提示\指南如何做到这Selenium一点就可以了。

谢谢!

4

3 回答 3

1

(这是在硒中)

findElements()将为您提供WebElements. 您可以对其中的每一个执行操作。

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

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

findElements()可以返回所有这些跨度。所以我会得到一个List包含 5 WebElements。我可以WebElementsgetText(). 例子:

List<Integer> values = new ArrayList<Integer>();
List<WebElement> elements = driver.findElements(By.cssSelector('span'));
    for (WebElement element : elements) {
        values.add(Integer.parseInt(element.getText());
    }

现在您将拥有一个包含值的列表。我将把排序留给你,因为你可以通过很多方法来做到这一点。

于 2016-07-01T12:17:18.607 回答
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意味着你listsorted为了否则not

希望它会帮助你... :)

于 2016-07-01T12:49:01.210 回答
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;
}
于 2018-12-07T17:09:37.607 回答