2017-03-03 2 views
1

Ich habe ein Problem, bei dem ExtentReports den Screenshot nicht zeigt, wenn der Bericht auf einem anderen Computer angezeigt wird. Wenn ich das Bild in den Bericht speichere, übergebe ich den absoluten Pfad der Bilddatei. Der Benutzer, der den Bericht anzeigen möchte, muss den Ordner "report.html" und den Ordner "Errorscreenshot" auf das Laufwerk D kopieren. Dann können nur sie den Screenshot sehen. Bitte schlagen Sie einen anderen Weg vor, damit der Benutzer diese Dateien an einen beliebigen Ort kopieren kann, damit der Screenshot angezeigt werden kann.ExtentReports in Selen Webdriver

Mein Code ist unten:

TakesScreenshot ts = (TakesScreenshot)driver; 
File source = ts.getScreenshotAs(OutputType.FILE); 

String dest = "D:\\ErrorScreenshots\\"+screenShotName+System.currentTimeMillis()+".png"; 
File destination = new File("D:\\ErrorScreenshots\\"+screenShotName+System.currentTimeMillis()+".png"); 
FileUtils.copyFile(source, destination);  
//FileUtils.copyFile(source,); 

Antwort

1

Verwenden Sie relative Pfad für Screenshots. Speichern Sie Ihre Screenshots, wo sich Ihre HTML-Datei befindet.

+0

wie relativen Pfad in dem obigen Code – Vishnu

1

Verwenden relativer Pfad für Bildschirm wie unten:

String path = System.getProperty("user.dir")+"\\ErrorScreenshots\\"+screenShotName+System.currentTimeMillis()+".png"; 
File destination = new File(path); 
+0

Es funktionierte zu verwenden. Ich habe so hinzugefügt String dest = ". \\ ErrorScreenshots \\" + screenShotName + System.currentTimeMillis() + ". Png"; Datei Ziel = neue Datei (". \\ ErrorScreenshots \\" + screenShotName + System.currentTimeMillis() + ". Png"); – Vishnu

1

Statt relativen Pfad. Ich fand es einfacher, wenn das Bild in das Base64-Format konvertiert wird. In diesem Fall möchten wir nur die .html-Datei freigeben.

TakesScreenshot ts = (TakesScreenshot) -Treiber;

String dest = ts.getScreenshotAs(OutputType.BASE64); 

    return "data:image/jpg;base64, " + dest ;