【问题标题】:Problem with sorting elements Selenium webdriver javaSelenium webdriver java排序元素的问题
【发布时间】:2021-10-26 21:55:06
【问题描述】:

我在对 Web 元素进行排序时遇到问题,来自网站的排序元素的顺序与来自我的排序列表中的元素的顺序不同。

结果: 我的排序字符串列表:

[0 0, 1 1, A A, A A, A A, AAAA, AAAA, Cascasc Aaaaa, Jan Jankowski, Jan Janowski, Jan Kon, Jan kowalski, pp]

来自网站的字符串列表:

[0 0, 1 1, A A, A A, A A, AAAA, AAAA, Cascasc Aaaaa, Jan Jankowski, Jan Janowski, Jan kowalski, Jan Kon, pp]

不同的顺序:

Jan Kon, Jan kowalski

我的排序字符串列表:

[0 0, 464 464, A A, A A, a a, a a, a a, a b, a s, aa a, abv sada, ala Janka, ala ola, anna, anna, anna, bankowa]

来自网站的列表:

[0 0, 464 464, a a, a a, a a, a b, a s, aa a, abv sada, ala Janka, ala ola, anna, anna, anna, bankowa, A A, A A]

不同的顺序:

A A, A A

代码:

getObtainedList(String css){
    ArrayList<String> obtainedList = new ArrayList<>(); 
    List<WebElement> elementList= driver.findElements(By.CssSelector(css));
     for(webElement we:elementList){
       obtainedList.add(we.getText);
     }
    }
    
    getSortedList(List list){
    ArrayList<String> sortedList = new ArrayList<>();   
     for(String s:list){
     sortedList.add(s);
     }
    }


    List<String> obtainedList = getObtainedList(cssSelector);
    
    List<String> sortedList = getSortedList(obtainedList);
    Collections.sort(sortedList)
    
    Assert.assertEquals(sortedList, obtainedList)

【问题讨论】:

  • 您是如何从网站检索数据的?你会为此分享你的代码吗?
  • 您好,我添加了代码。类似于来自的第 3 个答案的代码:
  • 如果您希望它们匹配,只需通过您的 collections.sort 方法运行收集的列表。好像他们在他们的比较器中做一个 toLower 或 toUpper ......在网站上。这可能是设计使然,但对我来说似乎是一个错误。
  • 嗨,我也是这样做的,在我的帖子中的代码中。

标签: java selenium sorting


【解决方案1】:

请尝试以下代码:

ArrayList<String> obtainedList = new ArrayList<>(); 
// Get all options
List<WebElement> elementList= driver.findElements(By.CssSelector(css));

// Creating a list to store drop down options
List options = new ArrayList();


for(WebElement optionElement : elementList)
{
    obtainedList.add(optionElement.getText());
}

  
System.out.println("Options in dropdown with Default order :"+obtainedList);

// Creating a temp list to sort
List tempList = new ArrayList(obtainedList);

Collections.sort(tempList);

System.out.println("Sorted List "+ tempList);

boolean ifSortedAscending = obtainedList.equals(tempList);

if(ifSortedAscending)
{
    System.out.println("List is sorted");
}
else
    System.out.println("List is not sorted.");

【讨论】:

  • 您好,感谢您的回答,@arpita biswas 我认为我们有类似的方法,我使用断言,您使用布尔值。
  • 所以它在网站上的意思是——它没有维护一个排序的订单列表。所以我认为您可以验证列表是否已排序。那么你现在在寻找什么?
  • 我认为我的排序与页面排序相比很糟糕,我想使用例如比较器等于它们
猜你喜欢
  • 2021-07-04
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多