Я даю тот же путь к файлу для записи данных (отчет о прохождении / неудаче теста) в файл Excel и переименование того же пути к файлу с текущей датой и временем в конце выполнения, но при переименовании того же пути к файлу с помощью текущего Дата и время в конце выполнения. Я получаю одно исключение: java .nio.file.FileSystemException: C: \ Users \ skumari1 \ eclipse-workspace \ CoreLinkAutomation \ PCPAutomation.xlsx -> C : \ Users \ skumari1 \ eclipse-workspace \ CoreLinkAutomation \ PCPAutomation1.xlsx + Validatedate (): процесс не может получить доступ к файлу, потому что он используется другим процессом.
public class TestBase {
public static WebDriver driver;
public static Properties prop_config;
public static Properties prop_filr_io;
public static String FilePath="C:\\Users\\skumari1\\eclipse-workspace\\CoreLinkAutomation\\PCPAutomation.xlsx"; **Here i am providing the filepath to write data into Excel sheet.**
public static String sheet_name="PCP(P)";
public static String sheet_name1="PCP(S)";
@BeforeClass
public static void StartExecution()
{
System.out.println("Start Execution");
}
@BeforeMethod
public static void initialization() throws IOException
{
try {
prop_config=new Properties();
prop_config.load(new FileInputStream("C:\\Users\\skumari1\\eclipse-workspace\\CoreLinkAutomation\\src\\main\\java\\com\\corelink\\resources\\config.properties"));
String browserName=prop_config.getProperty("browser");
if(browserName.equals("chrome"))
{
System.setProperty("webdriver.chrome.driver","H:\\udemy\\chromedriver_win32 (1)\\chromedriver.exe");
driver=new ChromeDriver();
}
else if(browserName.equals("FF"))
{
System.setProperty("webdriver.gecko.driver","C:\\Users\\skumari1\\eclipse-workspace\\CoreLinkAutomation\\geckodriver.exe");
driver=new FirefoxDriver();
}
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(TestUtil.PAGE_LOAD_TIMEOUT, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(TestUtil.IMPLICIT_WAIT, TimeUnit.SECONDS);
driver.get(prop_config.getProperty("url"));
prop_filr_io=new Properties();
prop_filr_io.load(new FileInputStream("C:\\Users\\skumari1\\eclipse-workspace\\CoreLinkAutomation\\src\\main\\java\\com\\corelink\\resources\\file_constants.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
@AfterMethod
public void screenShot(ITestResult result) throws Exception{
//using ITestResult.FAILURE is equals to result.getStatus then it enter into if condition
if(ITestResult.FAILURE==result.getStatus()){
try{
// To create reference of TakesScreenshot
TakesScreenshot screenshot=(TakesScreenshot)driver;
// Call method to capture screenshot
File src=screenshot.getScreenshotAs(OutputType.FILE);
// Copy files to specific location
// result.getName() will return name of test case so that screenshot name will be same as test case name
//FileUtils.cleanDirectory(new File("./FailedTestCases"+result.getName()+".png"));
Thread.sleep(5000);
FileUtils.copyFile(src, new File("./FailedTestCases/" +result.getName()+".png"));
System.out.println("Successfully captured a screenshot");
}catch (Exception e){
System.out.println("Exception while taking screenshot "+e.getMessage());
}
}
driver.quit();
}
@AfterClass
public void EndExecution() throws Exception{
Path source = Paths.get("C:\\Users\\skumari1\\eclipse-workspace\\CoreLinkAutomation\\PCPAutomation.xlsx");**The same Filepath using here**
try{
Files.move(source, source.resolveSibling("PCPAutomation1.xlsx + Validatedate()"),
StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String Validatedate() {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy_HH_mm_ss");
Date date = new Date();
String date1= dateFormat.format(date);
// System.out.println("Current date and time is " +date1);
return date1;
}
}
public static void write_test_result(String result, String sheet_name, String filePath,int row_num,int col_num) throws EncryptedDocumentException, FileNotFoundException, IOException
{
Workbook wb = WorkbookFactory.create(new FileInputStream(filePath));
Sheet sh = wb.getSheet(sheet_name);
sh.getRow(row_num).createCell(col_num).setCellValue(result);
//sh.createRow(row_num).createCell(col_num).setCellValue(result);
wb.write(new FileOutputStream(filePath));
//wb.close();
}
Здесь создан метод для пути к файлу и имя листа для записи данных в лист Excel и путь к файлу, который я предоставляю в базовом классе перед выполнением, вы можете проверить выше в коде. Следовательно, как мне закрыть эту программу, потому что wb.close не работает.
** Если я использую другой путь к файлу, мой код работает нормально, но требование клиента похоже на Ins ert pass / Fail Test Report в файл Excel, и тот же файл должен быть переименован как обновленная метка времени в конце каждого выполнения, но когда я переименовываю его, я получаю это исключение. Могу ли я получить решение по этому поводу? Можно ли переименовать тот же путь к файлу, который уже используется? **