Selenium DataProvider - Как добавить все значения из таблицы Excel в HashMap - PullRequest
0 голосов
/ 21 мая 2019

Я написал несколько тестовых сценариев, в которые мне нужно отправить тестовые данные для выполнения сценариев. Я написал код для итерации Excel и нахождения заданной строки вместе с номером строки и столбца, в котором присутствует строка. Вот мой формат testData, который я хочу использовать:

TestCase_ID || File Format || File Name || File Path || .... n
===============================================================
TC_01       || Document    || selenium.pdf || C://selenium.pdf
===============================================================

Вот код итерации Excel, который я использую:

  public class ExcelFileData {

    private String fileFormat; 

    private String fileName; 

    String filepath;

    public static void getCellData(String testCaseName) {

        try {

            FileInputStream file = new FileInputStream(new File("C://TestData_01.xlsx")); 

            @SuppressWarnings("resource")

            XSSFWorkbook workbook = new XSSFWorkbook(file); 

            XSSFSheet sheet = workbook.getSheetAt(0); 

            Iterator<Row> rowIterator = sheet.iterator(); 

                while (rowIterator.hasNext()) { 

                    Row row = rowIterator.next(); 

                    Iterator<Cell> cellIterator = row.cellIterator(); 

                while (cellIterator.hasNext()) { 

                    Cell cell = cellIterator.next(); 

                    if(cell.getCellType() == CellType.STRING && cell.getStringCellValue().equalsIgnoreCase(testCaseName)) {

                        System.out.println(cell.getStringCellValue());

                        System.out.println("search key  at Col: "+cell.getColumnIndex());

                        System.out.println("search key Found at Row: "+cell.getRowIndex());

                        }else {

                            break;
                        }
                    } 

                    System.out.println(""); 
                }       

            }catch (Exception e) {

                e.printStackTrace();
        }

    }

    Map<String, ExcelFileData> excelDataMap = new HashMap();

    public static void main(String args[]) {

        ExcelFileData.getCellData("TC_01");

    }

}

Выход:

TC_01
search key  at Col: 0
search key Found at Row: 1

Я хочу найти данные относительно данного контрольного примера. Например, я бы передал идентификатор тестового случая (т. Е. TC_01), а затем хотел бы перебрать все столбцы этой конкретной строки. Я новичок в программировании, поэтому хотел бы знать, как я могу поместить все данные, перебирая Excel в HashMap, чтобы я мог использовать эти данные в качестве входных данных для моих тестовых сценариев.

1 Ответ

1 голос
/ 21 мая 2019

Как уже говорилось, ниже приведен рабочий код для вас.

public class ExcelFileData {
  private String fileFormat;
  private String filePath;

  public String getFileFormat() {
    return fileFormat;
  }

  public void setFileFormat(String fileFormat) {
    this.fileFormat = fileFormat;
  }

  public String getFilePath() {
    return filePath;
  }

  public void setFilePath(String filePath) {
    this.filePath = filePath;
  }
}

Тестовый класс для проверки

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class TestExcelReader {
  public static void main(String[] args) throws Exception {
    FileInputStream file =
        new FileInputStream(
            new File(
                "Some Location in windows\\TestData_01.xlsx"));
    XSSFWorkbook workbook = new XSSFWorkbook(file);
    XSSFSheet sheet = workbook.getSheetAt(0);
    Iterator<Row> rowIterator = sheet.iterator();

    Map<String, ExcelFileData> excelDataMap = new LinkedHashMap<>();

    while (rowIterator.hasNext()) {
      Row row = rowIterator.next();
      Cell testCaseCell = row.getCell(0); // Test Case Name or Test Case Id

      Cell fileFormatCell = row.getCell(1);
      Cell filePathCell = row.getCell(2);

      ExcelFileData excelFileData = new ExcelFileData();
      if (fileFormatCell != null) excelFileData.setFileFormat(fileFormatCell.getStringCellValue());
      if (filePathCell != null) excelFileData.setFilePath(filePathCell.getStringCellValue());
      if (testCaseCell != null) {
        excelDataMap.put(testCaseCell.getStringCellValue(), excelFileData);
      }
    }

    excelDataMap.forEach(
        (key, value) -> {
          System.out.println("Key as test case Id : " + key);
          System.out.println("File Format : " + value.getFileFormat());
          System.out.println("File Path : " + value.getFilePath());
        });
  }
}

Я использовал java 8 вместе с Apache Poi версии 4.1.0и poi-ooxml 4.1.0.

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