#selenium-webdriver #automation #apache-poi
Вопрос:
У меня есть 3 листа в моем файле Excel. Я пытаюсь извлечь данные с помощью аннотации @dataProvider TestNG.В методе getTestData() я передаю имя листа. Через FileInputStream считываем путь к файлу. Даже если я печатаю путь к файлу, он отображается правильно. Печать пути сборки как — C:UsersGaurav Пратап Singheclipse-workspaceSampleTestFrameworkGPSsrcmainjavacomcrmqatestDataFreeCRMTestData.xlsx. Единственной проблемой может быть пробел в имени каталога. Но у меня есть еще один файл, т. е. config.properties, который отлично загружается из того же каталога.
package com.crm.qa.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import com.crm.qa.base.TestBase;
public class TestUtil extends TestBase {
public static String TESTDATA_SHEET_PATH = System.getProperty("user.dir")
"\src\main\java\com\crm\qa\testData\FreeCRMTestData.xlsx";
public static Workbook book;
public static Sheet sheet;
public static Object[][] getTestData(String sheetName){
FileInputStream fis = null;
try {
fis = new FileInputStream(new File(TESTDATA_SHEET_PATH));
// File Path printing perfectly
System.out.println("Sheet path " TESTDATA_SHEET_PATH);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("Sheet path " TESTDATA_SHEET_PATH);
try {
book = WorkbookFactory.create(fis);
} catch (EncryptedDocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
sheet = book.getSheet(sheetName);
Object[][] data = new Object[sheet.getLastRowNum()][sheet.getRow(0).getLastCellNum()];
for (int i = 0; i < sheet.getLastRowNum(); i ) {
for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k ) {
data[i][k] = sheet.getRow(i 1).getCell(k).toString();
}
}
return data;
}
}
Комментарии:
1. Попадается ли исключение
catch (FileNotFoundException e1)
?2. Да, @NandanA , фокус программы будет направлен на эту строку, упомянутую вами.
3. В коде нет ничего плохого. Путь, который вы проходите, я думаю, недействителен. Вы уверены, что это
\src\main\java\com\crm\qa\testData\FreeCRMTestData.xlsx"
правильный вариант? Можете ли вы добавить скриншот структуры проекта?
Ответ №1:
Это произошло из-за пути, в папке Гаурав Пратап Сингха есть пробелы. Я сменил диск, на котором нет свободных мест, и это сработало. Довольно странно, что я смог получить доступ к файлу config.properties из того же каталога.
Комментарии:
1. также, пожалуйста, используйте одну косую черту «/» вперед. потому что, когда мы развертываемся в Linux-машине. это не сработает на двойных косых чертах.
2. правильно, Джаянт, но я здесь использовал windows. Так что двойная косая черта появилась по умолчанию.