Сам тест
@DataProvider public Object[][] type() { return new Object[][]{ {ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ} }; } @DataProvider public Object[][] status() { return new Object[][]{ {ДАННЫЕЗАУКАЗАННЫЙПЕРИОД} }; } @Test(priority = 4) public void testFilterByDataPeriod() { app.getUserHelper().loginAs(USER); app.getUserHelper().isLoggedInAs(USER); app.getNavigationHelper().toDocuments(); app.getOrderedDocumentsPage().selectLSfromSelectList("130-Б102 ЗАО \"Секретно\""); app.getOrderedDocumentsPage().getOrderedDocList(); //Ручной ввод даты не работает // app.getOrderedDocumentsPage().filterByDate("01.04.2017","30.04.2017"); app.getOrderedDocumentsPage().filterByDocType(ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ); app.getOrderedDocumentsPage().filterByStatus(ДАННЫЕЗАУКАЗАННЫЙПЕРИОД); app.getOrderedDocumentsPage().showSearchResult();//Просто клик по копне "Показать" app.getOrderedDocumentsPage().assertFilterOrderedDocuments(ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ,ДАННЫЕЗАУКАЗАННЫЙПЕРИОД); }
Фильтр по типу аналогичен с фильтр по типу
public void filterByStatus(Status status) { click(By.xpath("//*[@name=\"Список 2\"]/div[2]")); switch (status) { case НЕТДАННЫХ: driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Нет данных']/div")).click(); break; case ВОБРАБОТКЕ: driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='В обработке']/div")).click(); break; case ОТПРАВЛЕН: driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Отправлен']/div")).click(); break; case ОШИБКА: driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Ошибка']/div")).click(); break; case ДАННЫЕЗАУКАЗАННЫЙПЕРИОД: driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Данные за указанный период не найдены']/div")).click(); break; } }
Основная проблема здесь.
public void assertFilterOrderedDocuments(Type type,Status status) { List<WebElement> elements=driver.findElements(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[1]/td[1]/div/span")); int i=1; for (WebElement element:elements) { String doc_type = element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[" + i + "]/td[3]/div/span")).getText(); String doc_period=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[" + i + "]/td[4]/div/span")).getText(); String doc_status=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText(); String doc_delivery=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText(); String doc_format=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[1]/td["+i+"]/div/span")).getText(); String doc_LS=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText(); i++; assertEquals(doc_type,type); assertEquals(doc_period, "01.01.2017 - 31.01.2017, 01.02.2017 - 28.02.2017, 01.03.2017 - 31.03.2017, 01.10.2016 - 31.10.2016, 01.11.2016 - 30.11.2016, 01.12.2016 - 31.12.2016"); assertEquals(doc_status, status); assertEquals(doc_delivery, "Andrey.Samoylov@south.rt.ru"); assertEquals(doc_format, "PDF"); assertEquals(doc_LS, "ЛС: 8451651"); }
Суть проблемы:
1) Понятное дело сейчас в сравнении получается подстановка "ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ", что приводит к результату:
Expected :ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ Actual :Счет-фактура, Счет, Расшифровка счета, Акт выполненных работ
Какие есть способы для подстановки мне требуемых данных, например алиас, что-то вроде: если выбран -"ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ" то ожидается текст .... и т.д
2) Вообще не уверен в верности решения в методе "assertFilterOrderedDocuments", возможно есть более элегантные решения?