有 Java 编程相关的问题?

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

使用selenium/java检查下拉建议中的排序顺序以获得最佳方法

我有一个下拉列表,我应该检查其中的项目是否按字母顺序排序

现在我使用两种方法来完成这项工作

我认为这样做有几个缺点:

  1. 代码看起来很长
  2. 我必须在每个页面中执行相同的步骤(我使用PabeObject模型),而不是在BasePage中使用它并在其他页面中调用它

我需要关于是否有更好的处理方法的建议

我的代码:

List<WebElement> issurTypeDropdown =new LinkedList<>(driver.findElements(By.xpath("(//INPUT[@type='search'])[4]/following-sibling::UL")));
        LinkedList<String> issueTypes =new LinkedList<String>();
        for(int i = 0; i< issurTypeDropdown.size(); i++)
        {

//            System.out.println(issurTypeDropdown.get(i).getText());
            issueTypes.add(issurTypeDropdown.get(i).getText());
        }
        boolean result = comp_order(issueTypes);

        return new add_issue_page();
    }

    //to compare
    public static boolean comp_order(LinkedList<String> pn)
    {
        String prev=""; // empty string
        for (final String cur: pn)
        {
            if (cur.compareTo(prev) < 0)
            {
                return false;
            }
            prev=cur;
        }
        return true;
    }

共 (2) 个答案

  1. # 1 楼答案

    下面是我用来验证数组是否按字母顺序排序的内容Ordering是由谷歌开发的Guava库的一部分

    public boolean isArraySortedAlphabetically(ArrayList<String> list){
        boolean isSorted = Ordering.from(String.CASE_INSENSITIVE_ORDER).isOrdered(list);
        return isSorted;
    }
    
  2. # 2 楼答案

    好的,所以我能够做到这一点,将cna作为一种方法,一旦它被移动到BasePage,就可以在页面中的任何地方使用它:

      protected boolean CheckSorting(String xpathExpression) {
            List<WebElement> issueTypeDropdown = new LinkedList<>(driver.findElements(By.xpath(xpathExpression)));
            LinkedList<String> issueTypes = new LinkedList<String>();
            for (int i = 0; i < issueTypeDropdown.size(); i++) {
    //            System.out.println(issueTypeDropdown.get(i).getText());
                issueTypes.add(issueTypeDropdown.get(i).getText());
            }
            return Compare(issueTypes);
        }