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

时间:2018-06-20 15:48:16

标签: java selenium automation pageobjects

我在下拉菜单中应检查其中的项目是否按字母顺序排序。

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

我发现这种方式有几个缺点:

  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 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

好吧,因此我能够通过将其作为将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);
    }