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 提供此功能来验证 sorting
是 Ordering
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
意味着你的 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;
}
基本上,我明白它是如何工作的,但我不能把它放在一起。
所以我对所有排序的元素都有 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 提供此功能来验证 sorting
是 Ordering
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
意味着你的 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;
}