我目前有一个表,我正在尝试使用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:另一条消息,示例消息 我想在分号(:)之前删除数据,因为它没有考虑到搜索中。
答案 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);