检查下拉列表中的排序顺序 - 使用 selenium/java 的最佳方法建议

Check sort order in drop down - advice for best approach using 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;
    }

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

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

好的,所以我能够通过将它作为方法来做到这一点,一旦它被移动到 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);
    }