有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用SeleniumWebDriver检查webtable中的webelements是否按字母顺序排序?

我们的应用程序包含web元素表。我的目的是检查目录是否按字母顺序排列

WebDriver d=new FirefoxDriver();
d.get("http://www.javatpoint.com/wrapper-class-in-java");

WebElement table=d.findElement(By.xpath(".//*[@id='city']/table/tbody"));
List<WebElement> lst=table.findElements(By.tagName("tr"));
System.out.println(lst);

List ls=new ArrayList<String>();
for(int i=0;i<=6;i++)
{
    ls=lst.addAll(get(i).getText())
}

我的目标是在一个列表中存储字符串类型的webelement,并创建另一个排序类型的列表 最后比较两个列表。请帮忙


共 (3) 个答案

  1. # 1 楼答案

    Collections.sort(SortedList,String.CASE_INSENSITIVE_ORDER);  
    

    只是即兴创作,我们需要添加String.CASE_INSENSITIVE_ORDER以匹配区分大小写的排序

  2. # 2 楼答案

    您可以将默认排序存储在类似obtainedList的字符串数组中,然后使用sortedList的集合对其进行排序,最后两者都进行排序

    ArrayList<String> obtainedList = new ArrayList<>(); 
    List<WebElement> elementList= driver.findElements(By.xpath(YourLocator));
    for(webElement we:elementList){
       obtainedList.add(we.getText);
    }
    ArrayList<String> sortedList = new ArrayList<>();   
    for(String s:obtainedList){
    sortedList.add(s);
    }
    Collections.sort(sortedList);
    Assert.assertTrue(sortedList.equals(obtainedList));
    

    对于降序添加:

    Collections.reverse(sortedList);
    

    Collections.sort(sortedList);之后

  3. # 3 楼答案

    public boolean sortVerify() {
        List<WebElement> theList=driver.findElements(By.xpath("//*[@id='productView']/div/div/div/div"));
        List<Integer> Prices=new ArrayList<>();
    
        for (int NumberOfItem=1; NumberOfItem<theList.size();NumberOfItem++) {
            System.out.println("feteching by xpath price");
            String priceOneRaw=driver.findElement(By.xpath("//*[@id=\"p_"+NumberOfItem+"_1\"]/div/div[5]/div/span[1]")).getText();
            System.out.println("feteching by xpath price    "+priceOneRaw);
            ////below 2 lines are to get the price in exact integers, as earlier it was in format Rs.3829.
        String priceOneFinal=priceOneRaw.replaceAll("[\\-\\?\\+\\.\\^:,\\\u20B9]","");
        String PriceComplete = priceOneFinal.split("Rs")[1];
        int finalPrice=Integer.parseInt(PriceComplete);
        Prices.add(finalPrice);
        }
    
        int previousPrice=Prices.get(0);
        for(int SortCheckNumber=1;SortCheckNumber<theList.size()-1;SortCheckNumber++) {
            if(Prices.get(SortCheckNumber)<previousPrice) {
                System.out.println("notSorted");
                return false;
            }else {
                previousPrice=Prices.get(SortCheckNumber);
            }
    
        }
        System.out.println("allSorted");
        return true;
    }