Finally I have done this ...Thanks to Gagravarr... Given me a good Idea.
boolean isDirCreated = false;//to create Screenshot directory just once
//Create Screenshot Directory.
public static void createDir(String ScreenshotDirAddress){
if(!isDirCreated){
File file= new File(ScreenshotDirAddress);
if (!file.exists())
file.mkdirs();
isDirCreated=true;
}
}
//hyperlink screenshot
public static void hyperlinkScreenshot(XSSFCell cell, String FileAddress){
XSSFWorkbook wb=cell.getRow().getSheet().getWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
CellStyle hlink_style = wb.createCellStyle();
Font hlink_font = wb.createFont();
hlink_font.setUnderline(Font.U_SINGLE);
hlink_font.setColor(IndexedColors.BLUE.getIndex());
hlink_style.setFont(hlink_font);
Hyperlink hp = createHelper.createHyperlink(Hyperlink.LINK_FILE);
FileAddress=FileAddress.replace("", "/");
hp.setAddress(FileAddress);
cell.setHyperlink(hp);
cell.setCellStyle(hlink_style);
}
//take screenshot
public static void takeScreenShot(WebDriver driver, String screenshotName, XSSFCell cell){
createDir();
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
String FullAddress=System.getProperty("user.dir")+"/"+ScreenshotDirAddress+"/"+screenshotName+".png";
FileUtils.copyFile(scrFile, new File(FullAddress));
hyperlinkScreenshot(cell, FullAddress);
} catch (IOException e) {
e.printStackTrace();
}
}
The Main problem that I have faced was related to the URL. If I used "" it is showing illegalArgumentException, while replacing it with "/" is working fine. I don't know the exact reason but if
FileAddress=FileAddress.replace("", "/");
is commented... it is showing illegal argument exception. So if the URL is
D:eclipseworkspaceTestAppScreenshotTestResultTest.png
will show the illegalArgumentException. However if "" is replaced by "/" to make it
D:/eclipse/workspace/TestApp/Screenshot/TestResult/Test.png
it is working properly. Both the URL is correct and opening the same file in browser or even using manually in excel file for hyperlink the same file its working fine. I don't know why it is showing exception in Apache POI, may be a possible Bug.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…