자동화테스트/Selenium2018. 12. 5. 08:00

파일 IO는 모든 소프트웨어 프로세스의 중요한 부분입니다. 우리는 종종 컴퓨터에서 파일을 만들고 열거 나 업데이트하거나 삭제합니다. Selenium Automation도 마찬가지입니다. Selenium을 사용하여 파일을 조작하는 프로세스가 필요합니다.

Java는 Selenium을 사용하여 File Manipulation을위한 다양한 클래스를 제공합니다. 이 튜토리얼에서는 Java IO 패키지 및 Apache POI 라이브러리를 사용하여 Excel 파일을 읽고 쓰는 방법을 배웁니다 .

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

Excel 내보내기

  • POI를 사용하여 파일을 처리하는 방법 (Maven POM Dependency)

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

엑셀을 읽거나 쓰려면 Apache는 매우 유명한 POI 라이브러리를 제공합니다. 이 라이브러리는 Excel의 XLS 및 XLSX 파일 형식 을 읽고 쓸 수 있습니다 .

XLS 파일 을 읽으려면 HSSF 구현이 POI 라이브러리에 의해 제공됩니다.

XLSX 를 읽으려면 POI 라이브러리 의 XSSF 구현이 선택됩니다. 이러한 구현을 자세히 살펴 보겠습니다.

프로젝트에서 Maven을 사용하고 있다면, Maven 의존성은

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>

또는 http://poi.apache.org/download.html 에서 최신 버전의 POI jar를 다운로드하고 최신 zip 파일을 다운로드 할 수 있습니다.

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

이 jar에 대한 zip 파일을 다운로드 할 때 압축을 풀고이 jar 파일을 프로젝트의 클래스 경로에 추가해야합니다.

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

POI의 클래스와 인터페이스 :

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

다음은 XLS 및 XLSX 파일 읽기를위한 POI 의 다양한 Java 인터페이스 및 클래스 목록입니다.

  • Workbook : XSSFWorkbook 및 HSSFWorkbook 클래스가이 인터페이스를 구현합니다.
  • XSSFWorkbook : XLSX 파일의 클래스 표현입니다.
  • HSSFWorkbook : XLS 파일의 클래스 표현입니다.
  • Sheet : XSSFSheet 및 HSSFSheet 클래스가이 인터페이스를 구현합니다.
  • XSSFSheet : XLSX 파일의 시트를 나타내는 클래스입니다.
  • HSSFSheet : XLS 파일의 시트를 나타내는 클래스입니다.
  • Row : XSSFRow 및 HSSFRow 클래스가이 인터페이스를 구현합니다.
  • XSSFRow : XLSX 파일의 시트에있는 행을 나타내는 클래스입니다.
  • HSSFRow : XLS 파일 시트에있는 행을 나타내는 클래스입니다.
  • Cell : XSSFCell 및 HSSFCell 클래스가이 인터페이스를 구현합니다.
  • XSSFCell : XLSX 파일의 행에있는 셀을 나타내는 클래스입니다.
  • HSSFCell : XLS 파일의 행에있는 셀을 나타내는 클래스입니다.

읽기 / 쓰기 작업 -

여기서는 Excel 파일 형식을 고려합니다.

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

Excel 파일에서 데이터 읽기

완전한 예 : 여기서 우리는 Excel 파일에서 데이터를 읽으려고합니다.

package excelExportAndFileIO;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadGuru99ExcelFile {

    

    public void readExcel(String filePath,String fileName,String sheetName) throws IOException{


    // xlsx 파일을 열려면 File 클래스의 객체를 만듭니다.

    File file =    new File(filePath+"\\"+fileName);


    // 엑셀 파일을 읽을 FileInputStream 클래스의 객체를 만듭니다.

    FileInputStream inputStream = new FileInputStream(file);

    Workbook guru99Workbook = null;


    // 하위 문자열에서 파일 이름을 분리하고 확장명 만 가져와 파일 확장명을 찾습니다.

    String fileExtensionName = fileName.substring(fileName.indexOf("."));


    // 파일이 xls 파일인지 확인합니다.

    if(fileExtensionName.equals(".xlsx")){

    // xlsx 파일이면 XSSFWorkbook 클래스의 객체를 만듭니다.

    guru99Workbook = new XSSFWorkbook(inputStream);

    }

    //Check condition if the file is xls file

    else if(fileExtensionName.equals(".xls")){

        // xls 파일이면 XSSFWorkbook 클래스의 객체를 만듭니다.

        guru99Workbook = new HSSFWorkbook(inputStream);

    }

    // 통합 문서 안의 시트를 이름으로 읽습니다.

    Sheet guru99Sheet = guru99Workbook.getSheet(sheetName);

    // Excel 파일에서 행 수 찾기

    int rowCount = guru99Sheet.getLastRowNum()-guru99Sheet.getFirstRowNum();

    // 엑셀 파일의 모든 행에 루프를 작성하여 읽습니다.

    for (int i = 0; i < rowCount+1; i++) {

        Row row = guru99Sheet.getRow(i);

        // 행의 셀 값을 인쇄하는 루프를 만듭니다.

        for (int j = 0; j < row.getLastCellNum(); j++) {

            // 콘솔에서 Excel 데이터를 인쇄합니다.

            System.out.print(row.getCell(j).getStringCellValue()+"|| ");

        }

        System.out.println();

    }

    

    }

    

    // 주요 함수는 readExcel 함수를 호출하여 Excel 파일에서 데이터를 읽습니다.

    public static void main(String...strings) throws IOException{

    // ReadGuru99ExcelFile 클래스의 객체를 만듭니다.

    ReadGuru99ExcelFile objExcelFile = new ReadGuru99ExcelFile();

    // Excel 파일의 경로를 준비합니다.
    String filePath = System.getProperty("user.dir")+"\\src\\excelExportAndFileIO";

    // 클래스의 파일 읽기 메소드를 호출하여 데이터를 읽습니다.

    objExcelFile.readExcel(filePath,"ExportExcel.xlsx","ExcelGuru99Demo");

    }

}

참고 : 여기서는 Testng 프레임 워크를 사용하지 않습니다 Java 응용 프로그램으로 클래스 실행

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

Excel 파일에 데이터 쓰기

완전한 예 : 여기서 Excel 파일에 새 행을 추가하여 Excel 파일에서 데이터를 쓰려고합니다.

package excelExportAndFileIO;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class WriteGuru99ExcelFile {

    

    public void writeExcel(String filePath,String fileName,String sheetName,String[] dataToWrite) throws IOException{

        // xlsx 파일을 열려면 File 클래스의 객체를 만듭니다.

        File file =    new File(filePath+"\\"+fileName);

        // 엑셀 파일을 읽을 FileInputStream 클래스의 객체를 만듭니다.

        FileInputStream inputStream = new FileInputStream(file);

        Workbook guru99Workbook = null;

        // 하위 문자열에서 파일 이름을 분리하고 확장명 만 가져와 파일 확장명을 찾습니다.

        String fileExtensionName = fileName.substring(fileName.indexOf("."));

        // 파일이 xlsx 파일인지 확인합니다.

        if(fileExtensionName.equals(".xlsx")){

        // xlsx 파일이면 XSSFWorkbook 클래스의 객체를 만듭니다.

        guru99Workbook = new XSSFWorkbook(inputStream);

        }

        

        else if(fileExtensionName.equals(".xls")){

            // xls 파일이면 XSSFWorkbook 클래스의 객체를 만듭니다.

            guru99Workbook = new HSSFWorkbook(inputStream);

        }

        

    // 시트 이름으로 시트 읽기 

    Sheet sheet = guru99Workbook.getSheet(sheetName);

    // Excel 파일의 현재 행 수를 가져옵니다.

    int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum();

    // 시트에서 첫 번째 행 가져 오기

    Row row = sheet.getRow(0);

    // 새 행을 만들고 마지막 행에 추가합니다.

    Row newRow = sheet.createRow(rowCount+1);

    // 새로 생성 된 Row의 셀 위에 루프를 만듭니다.

    for(int j = 0; j < row.getLastCellNum(); j++){

        // 행으로 데이터 채우기

        Cell cell = newRow.createCell(j);

        cell.setCellValue(dataToWrite[j]);

    }

    // 입력 스트림을 닫습니다.

    inputStream.close();

    // FileOutputStream 클래스의 객체를 생성하여 Excel 데이터에 쓰기 데이터를 만듭니다.

    FileOutputStream outputStream = new FileOutputStream(file);

    // 엑셀 파일에 데이터 쓰기

    guru99Workbook.write(outputStream);

    // 출력 스트림을 닫습니다.

    outputStream.close();

    

    }

    

    public static void main(String...strings) throws IOException{

        // Excel 파일에 채울 것으로 예상되는 순서와 동일한 순서로 데이터로 배열을 만듭니다. 

        String[] valueToWrite = {"Mr. E","Noida"};

        // 현재 클래스의 객체 만들기

        WriteGuru99ExcelFile objExcelFile = new WriteGuru99ExcelFile();

        // 파일 이름, 시트 이름 및 채울 데이터를 사용하여 파일을 작성합니다.

        objExcelFile.writeExcel(System.getProperty("user.dir")+"\\src\\excelExportAndFileIO","ExportExcel.xlsx","ExcelGuru99Demo",valueToWrite);

    }

}

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

JXL API를 사용한 Excel 조작

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

JXL은 또한 Excel 파일을 쓰는 독서의 또 다른 유명한 항아리입니다. 이제 하루 POI가 대부분의 프로젝트에서 사용되었지만 POI 이전에는 JXL이 Excel 조작 용 Java API 만 사용했습니다. 매우 작고 간단한 API입니다.

팁 : 2010 년부터 라이브러리가 활발히 개발되지 않았고 POI API와 비교하여 기능이 부족하기 때문에 새 프로젝트에서 JXL을 사용하지 않는 것이 좋습니다.

JXL 다운로드 :

JXL로 작업하려면이 링크에서 다운로드하십시오.

http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/

Selenium Webdriver의 Excel 파일에서 데이터 읽기 및 쓰기 : POI 및 JXL

또한 JXL 용 압축 파일 내부에서 데모 예제를 볼 수 있습니다.

일부 기능 :

  • JXL은 Excel 95, 97, 2000, XP, 2003 통합 문서를 읽을 수 있습니다.
  • 우리는 영어, 프랑스어, 스페인어, 독일어로 작업 할 수 있습니다.
  • Excel에서 차트 및 이미지 삽입 복사 가능

약점:

  • 우리는 Excel 97 및 이후 버전 만 작성할 수 있습니다 (Excel 95 작성은 지원되지 않습니다).
  • JXL은 XLSX 형식의 Excel 파일을 지원하지 않습니다.
  • Excel 2000 형식의 스프레드 시트를 생성합니다.

개요:

  • Excel 파일은 Java IO 작업으로 읽을 수 있습니다. 이를 위해서는 Apache POI Jar 를 사용해야 합니다.
  • Excel 파일에는 XLSX 및 XLS 파일 의 두 가지 통합 문서가 있습니다.
  • POI는 인터페이스 통합 문서, 시트, 행, 셀이 다릅니다.
  • 이러한 인터페이스는 해당 XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) 및 XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) 파일 조작 클래스로 구현됩니다.
  • JXL은 Excel 조작을위한 또 다른 API입니다.
  • JXL은 XLSX 형식의 Excel에서는 작동하지 않습니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터