2016-05-20 2 views
0

В настоящее время у меня есть таблица, в которой я пытаюсь проверить сортировку по возрастанию/убыванию, используя selenium webdriver и java, но у меня есть текст, который игнорируется в фактической сортировке, и я могу " t выяснить, как игнорировать один и тот же текст, чтобы проверить правильность сортировки. Это мой текущий код, который получает все данные столбцаКак игнорировать определенные символы при сортировке столбцов таблицы

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); 

}

Вот пример того, что мои данные могут выглядеть следующим образом. Out of Office: Сообщение, Чтение: тестовое сообщение, Тестовое сообщение, FW: другое сообщение, пример сообщения Я хочу удалить данные перед точкой с запятой (:), потому что это не учитывается в поиске.

ответ

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 см для более подробной информации.

0

Возможно небольшое изменение кода с помощью Java строки манипуляции должны служить вашей цели:

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

и отдыха все должны работать надлежащим образом, используя ту же логику, как настоящий.

Примечание: Измененная строка может также использовать

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