排序表列时如何忽略某些字符

时间:2016-05-20 14:07:00

标签: java sorting selenium

我目前有一个表,我正在尝试使用selenium webdriver和java验证升序/降序排序,但我在实际排序中忽略了文本,我无法弄清楚如何忽略相同的文本验证排序是否正确。 这是我当前获取所有列数据的代码

protected List<String> getMessageList(Integer column) {
    List<WebElement> messageElements = driver.findElements(By.xpath("//table[@class='table-hover message-grid table table-condensed']/tbody/tr/td[" + column + "]"));
    List<String> messageList = new ArrayList<String>();
    for (WebElement element : messageElements) {
        if (!element.getText().equals("")) {
          messageList.add(element.getText());
        }
    }
    System.out.println(messageList);
    return messageList;
}

protected void validateAscendingOrder(Integer column) { List messageList = getMessageList(column);
// create a new list and sort
List<String> sortedmessageList = new ArrayList<String>();
sortedmessageList.addAll(messageList);
Collections.sort(sortedmessageList);

// compare the original list order with the sorted list to make sure they match
assertEquals(sortedmessageList, messageList);

}

以下是我的数据的示例。外出:消息,阅读:测试消息, 测试消息,FW:另一条消息,示例消息 我想在分号(:)之前删除数据,因为它没有考虑到搜索中。

2 个答案:

答案 0 :(得分:1)

为您的排序创建一个比较器,如下所示:

Collections.sort(sortedmessageList, new Comparator<String>() {

        @Override
        public int compare(String t, String t1) {
            // do your custom comparator here, for example :
            return t.split(":")[1].compareTo(t1.split(":")[1]);
        }
    });

有关更多信息,请参阅this tutorial

答案 1 :(得分:0)

使用java字符串操作进行的小代码更改可能会达到您的目的:

if (!element.getText().equals("")) {
  String modifiedString = element.getText().replaceAll(".*:",""); //something greedy learnt
  messageList.add(modifiedString);
}

and rest all应使用与现有相同的逻辑正常工作。

注意 :您修改的字符串也可以使用

String modifiedString = element.getText().substring(element.getText().indexOf(":") + 1);