Файловый ввод-вывод - важная часть любого программного процесса. Мы часто создаем файл, открываем его и что-то обновляем или удаляем на наших компьютерах. То же самое и с Selenium Automation. Нам нужен процесс для управления файлами с помощью Selenium.
Java предоставляет нам разные классы для работы с файлами с помощью Selenium. В этом руководстве мы узнаем, как мы можем читать и писать в файл Excel с помощью пакета Java IO и библиотеки Apache POI.
Apache POI в Selenium
Apache POI в Селене является широко используемым API для данных селена ведомых тестирований. Это библиотека POI, написанная на Java, которая предоставляет пользователям API для управления документами Microsoft, такими как .xls и .xlsx. Пользователи могут легко создавать, изменять и читать / записывать файлы Excel. POI означает «Плохая реализация обфускации».
- Как обрабатывать файл Excel с помощью POI (зависимость Maven POM)
- Классы и интерфейсы в POI
- Операция чтения / записи
- Прочитать данные из файла Excel
- Записать данные в файл Excel
- Управление Excel с помощью JXL API
Экспорт в Excel
Как обрабатывать файл Excel с помощью POI (зависимость Maven POM)
Для чтения и записи файла Excel на Java Apache предоставляет очень известную библиотеку POI. Эта библиотека способна читать и записывать файлы Excel как в формате XLS, так и в формате XLSX .
Для чтения файлов XLS в библиотеке POI предоставляется реализация HSSF .
Для чтения XLSX предпочтительнее будет реализация XSSF библиотеки POI . Давайте подробно изучим эти реализации.
Если вы используете Maven в своем проекте, зависимость Maven будет
<зависимость>org.apache.poi poi 4.1.1
Или вы можете просто загрузить последние версии файлов POI jar с http://poi.apache.org/download.html и загрузить последний zip-файл.
Когда вы загружаете zip-файл для этого jar-файла, вам необходимо его распаковать и добавить все эти jar-файлы в путь к классам вашего проекта.
Классы и интерфейсы в POI:
Ниже приведен список различных интерфейсов и классов Java в POI для чтения файлов XLS и XLSX.
- Рабочая книга : классы XSSFWorkbook и HSSFWorkbook реализуют этот интерфейс.
- XSSFWorkbook : представляет собой классовое представление файла XLSX.
- HSSFWorkbook : представляет собой классовое представление файла XLS.
- Лист : классы XSSFSheet и HSSFSheet реализуют этот интерфейс.
- XSSFSheet : класс, представляющий лист в файле XLSX.
- HSSFSheet : класс, представляющий лист в файле XLS.
- Строка : классы XSSFRow и HSSFRow реализуют этот интерфейс.
- XSSFRow : класс, представляющий строку на листе файла XLSX.
- HSSFRow : класс, представляющий строку на листе файла XLS.
- Ячейка : классы XSSFCell и HSSFCell реализуют этот интерфейс.
- XSSFCell : класс, представляющий ячейку в строке файла XLSX.
- HSSFCell: класс, представляющий ячейку в строке файла XLS.
Операция чтения / записи
В нашем примере мы рассмотрим приведенный ниже формат файла Excel.
Прочитать данные из файла Excel
Полный пример: здесь мы пытаемся прочитать данные из Excel в Selenium:
пакет 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;импортировать org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;открытый класс ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) выбрасывает IOException {// Создаем объект класса File для открытия файла xlsxФайл file = новый файл (filePath + "\\" + fileName);// Создаем объект класса FileInputStream для чтения файла ExcelFileInputStream inputStream = новый FileInputStream (файл);Рабочая тетрадь guru99Workbook = null;// Находим расширение файла, разбивая имя файла в подстроке и получая только имя расширенияСтрока fileExtensionName = fileName.substring (fileName.indexOf ("."));// Проверяем условие, если файл xlsxif (fileExtensionName.equals (". xlsx")) {// Если это файл xlsx, то создаем объект класса XSSFWorkbookguru99Workbook = новый XSSFWorkbook (inputStream);}// Проверяем условие, если это файл xlselse if (fileExtensionName.equals (". xls")) {// Если это xls файл, то создаем объект класса HSSFWorkbookguru99Workbook = новый HSSFWorkbook (inputStream);}// Считываем лист внутри книги по имениЛист guru99Sheet = guru99Workbook.getSheet (sheetName);// Находим количество строк в файле Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Создаем цикл по всем строкам файла Excel, чтобы прочитать егоfor (int i = 0; iПримечание. Здесь мы не используем фреймворк Testng. Запустите класс как приложение Java, используя функцию read excel в Selenium, как показано в примере выше.
Записать данные в файл Excel
Полный пример: здесь мы пытаемся записать данные из файла Excel, добавляя новую строку в файл Excel.
пакет 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;импортировать org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;открытый класс WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) выбрасывает IOException {// Создаем объект класса File для открытия файла xlsxФайл file = новый файл (filePath + "\\" + fileName);// Создаем объект класса FileInputStream для чтения файла ExcelFileInputStream inputStream = новый FileInputStream (файл);Рабочая тетрадь guru99Workbook = null;// Находим расширение файла, разбивая имя файла в подстроке и получая только имя расширенияСтрока fileExtensionName = fileName.substring (fileName.indexOf ("."));// Проверяем условие, если файл xlsxif (fileExtensionName.equals (". xlsx")) {// Если это файл xlsx, то создаем объект класса XSSFWorkbookguru99Workbook = новый XSSFWorkbook (inputStream);}// Проверяем условие, если это файл xlselse if (fileExtensionName.equals (". xls")) {// Если это xls файл, то создаем объект класса XSSFWorkbookguru99Workbook = новый HSSFWorkbook (inputStream);}// Считываем лист Excel по имени листаЛист Sheet = guru99Workbook.getSheet (sheetName);// Получить текущее количество строк в файле Excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Получаем первую строку из листаСтрока row = sheet.getRow (0);// Создаем новую строку и добавляем ее последней на листеСтрока newRow = sheet.createRow (rowCount + 1);// Создаем цикл над ячейкой только что созданной строкиfor (int j = 0; jУправление Excel с помощью JXL API
JXL - еще одна известная банка для чтения файлов Excel на Java и записи файлов. В настоящее время POI используется в большинстве проектов, но до POI JXL был только Java API для работы с Excel. Это очень маленький и простой API для чтения в формате Excel в Selenium.
СОВЕТЫ: Я предлагаю не использовать JXL в каком-либо новом проекте, потому что библиотека не находится в активной разработке с 2010 года и в ней отсутствует функция по сравнению с POI API.
Скачать JXL:
Если вы хотите работать с JXL, вы можете скачать его по этой ссылке
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Вы также можете получить демонстрационный пример внутри этого заархивированного файла для JXL.
Некоторые особенности:
- JXL может читать файлы Excel в Selenium для книг 95, 97, 2000, XP, 2003.
- Мы можем работать с английским, французским, испанским, немецким языками.
- Возможно копирование диаграммы и вставка изображения в Excel
Недостаток:
- Мы можем писать только в Excel 97 и более поздних версиях (запись в Excel 95 не поддерживается).
- JXL не поддерживает формат XLSX файла Excel.
- Он генерирует электронную таблицу в формате Excel 2000.
Резюме:
- Файл Excel можно прочитать операцией ввода-вывода Java. Для этого нам нужно использовать Apache POI Jar .
- В файле Excel есть книги двух типов: файлы XLSX и XLS .
- POI имеет разные интерфейсы: Рабочая книга, Лист, Строка, Ячейка.
- Эти интерфейсы реализуются соответствующими классами обработки файлов XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) и XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
- JXL - еще один API для работы с Excel в Selenium.
- JXL не может работать с форматом XLSX в Excel.