Проверка таблицы HTML с таблицей данных с использованием Cucumber Java ⇐ JAVA
-
Гость
Проверка таблицы HTML с таблицей данных с использованием Cucumber Java
Я проверяю таблицу HTML с таблицей данных с помощью Cucumber Java и написал следующий метод.
public voidverifyHtmlTableData(DataTable dataTable) { WebElement htmlTableElement = webDriver.findElement(By.xpath("//table[@class='tablename']")); Список rowElements = htmlTableElement.findElements(By.tagName("tr")); List dataTableRows = dataTable.asLists(); //внешний List — это строки, внутренний List — это ячейки
// Проверяем, что количество строк в Datatable и html-таблице одинаково Assert.assertEquals("Строки таблицы данных должны соответствовать строкам таблицы HtmlTable", dataTableRows.size(), rowElements.size()); //Проверяем заголовок таблицы List headerElements = rowElements.get(0).findElements(By.xpath(".//th")); // получаем все заголовки из строки WebElement CompareTableData(headerElements, dataTableRows.get(0),0 ); rowElements.remove(0); for (List row: dataTableRows) { //проходим по каждой строке во входных данных DataTable int rowIdx = dataTableRows.indexOf(строка); WebElement rowElem = rowElements.get(rowIdx); // получаем строку WebElement на основе индекса текущей строки в DataTable List cellElements = rowElem.findElements(By.xpath(".//td")); // получаем все ячейки из строки WebElement CompareTableData (cellElements, row, rowIdx); } } public void CompareTableData(List cellElements, List row, int rowIdx){ for (String ожидаемая ячейка: строка) { //проходим по каждой ячейке в текущей строке DataTable int cellIdx = row.indexOf(expectedCell); Строка factCell = cellElements.get(cellIdx).getText(); если (expectedCell == null) { ожидаемая ячейка = ""; } log.info("DataTable row " + rowIdx + ", cell " + cellIdx + ": " + ожидаемая ячейка); log.info("Фактическое значение на странице: " + factCell); Assert.assertEquals("Ожидаемое значение ячейки должно совпадать с фактическим значением ячейки", ожидаемая ячейка, фактическая ячейка); } } Я не могу удалить таблицу заголовков из таблицы данных, поэтому это не работает. Кто-нибудь может помочь, пожалуйста?
Я попробовал dataTableRows.remove(0); Но он удаляет только первый элемент
Я проверяю таблицу HTML с таблицей данных с помощью Cucumber Java и написал следующий метод.
public voidverifyHtmlTableData(DataTable dataTable) { WebElement htmlTableElement = webDriver.findElement(By.xpath("//table[@class='tablename']")); Список rowElements = htmlTableElement.findElements(By.tagName("tr")); List dataTableRows = dataTable.asLists(); //внешний List — это строки, внутренний List — это ячейки
// Проверяем, что количество строк в Datatable и html-таблице одинаково Assert.assertEquals("Строки таблицы данных должны соответствовать строкам таблицы HtmlTable", dataTableRows.size(), rowElements.size()); //Проверяем заголовок таблицы List headerElements = rowElements.get(0).findElements(By.xpath(".//th")); // получаем все заголовки из строки WebElement CompareTableData(headerElements, dataTableRows.get(0),0 ); rowElements.remove(0); for (List row: dataTableRows) { //проходим по каждой строке во входных данных DataTable int rowIdx = dataTableRows.indexOf(строка); WebElement rowElem = rowElements.get(rowIdx); // получаем строку WebElement на основе индекса текущей строки в DataTable List cellElements = rowElem.findElements(By.xpath(".//td")); // получаем все ячейки из строки WebElement CompareTableData (cellElements, row, rowIdx); } } public void CompareTableData(List cellElements, List row, int rowIdx){ for (String ожидаемая ячейка: строка) { //проходим по каждой ячейке в текущей строке DataTable int cellIdx = row.indexOf(expectedCell); Строка factCell = cellElements.get(cellIdx).getText(); если (expectedCell == null) { ожидаемая ячейка = ""; } log.info("DataTable row " + rowIdx + ", cell " + cellIdx + ": " + ожидаемая ячейка); log.info("Фактическое значение на странице: " + factCell); Assert.assertEquals("Ожидаемое значение ячейки должно совпадать с фактическим значением ячейки", ожидаемая ячейка, фактическая ячейка); } } Я не могу удалить таблицу заголовков из таблицы данных, поэтому это не работает. Кто-нибудь может помочь, пожалуйста?
Я попробовал dataTableRows.remove(0); Но он удаляет только первый элемент
Мобильная версия