Ist es möglich, einen Screenshot mit Selenium WebDriver zu erstellen?
(Anmerkung: Nicht Selenium-Fernbedienung )
Ist es möglich, einen Screenshot mit Selenium WebDriver zu erstellen?
(Anmerkung: Nicht Selenium-Fernbedienung )
Ich dachte, ich würde meine vollständige Lösung angeben, da es zwei verschiedene Möglichkeiten gibt, einen Screenshot zu erstellen. Die eine ist vom lokalen Browser, die andere vom entfernten Browser. Ich bette das Bild sogar in den HTML-Bericht ein:
@After()
public void selenium_after_step(Scenario scenario) throws IOException, JSONException {
if (scenario.isFailed()){
scenario.write("Current URL = " + driver.getCurrentUrl() + "\n");
try{
driver.manage().window().maximize(); // Maximize window to get full screen for chrome
}
catch (org.openqa.selenium.WebDriverException e){
System.out.println(e.getMessage());
}
try {
if(isAlertPresent()){
Alert alert = getAlertIfPresent();
alert.accept();
}
byte[] screenshot;
if(false /*Remote Driver flow*/) { // Get a screenshot from the remote driver
Augmenter augmenter = new Augmenter();
TakesScreenshot ts = (TakesScreenshot) augmenter.augment(driver);
screenshot = ts.getScreenshotAs(OutputType.BYTES);
}
else { // Get a screenshot from the local driver
// Local webdriver user flow
screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
scenario.embed(screenshot, "image/png"); // Embed the image in reports
}
catch (WebDriverException wde) {
System.err.println(wde.getMessage());
}
catch (ClassCastException cce) {
cce.printStackTrace();
}
}
//seleniumCleanup();
}
Mit C# und MSTestframework, Hier habe ich eine statische Methode erstellt. Ich habe einen Pfad genommen, in dem ich die Bilder im jpeg-Format speichern kann. Um mehr Klarheit zu schaffen, benenne ich diese Screenshots mit den aktuell ausgeführten Testfällen sowie Datum und Uhrzeit des Fehlers.
/// <summary>
/// This method is used to screen shot where test method failed
/// </summary>
/// <param name="testCase">TestCaseName</param>
public static void Capture(string testCase)
{
try
{
StringBuilder path = new StringBuilder("C:/Logs/Screenshot/");
Constant.screenshot = ((ITakesScreenshot)Constant.browser).GetScreenshot();
string fileName = path.Append(string.Format(testCase + "-at-{0:yyyy-MM dd_hh-mm-ss}.jpeg", DateTime.Now)).ToString();
Constant.screenshot.SaveAsFile(fileName, ScreenshotImageFormat.Jpeg);
}
catch (Exception e)
{
File.AppendAllText("C:/Logs/FailedTestCasesLogs.txt", "\nCOULD NOT CAPTURE THE SCREENSHOT!\n");
Log(e);
}
}
JAVA
Hallo, können Sie Screenshot in Selenium und hier ist der Code unten mit Hilfe von denen Sie Screenshot in jedem Selenium-Projekt erstellen können und wir können auch Screenshots für die fehlgeschlagenen Szenario in aws zu generieren.
public boolean takeScreenshot(final String name) {
String screenshotDirectory = System.getenv("WORKING_DIRECTORY");
File screenshot =
((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
return screenshot.renameTo(new File(screenshotDirectory,
String.format("%s.png", name)));
}
Sie können einen Screenshot des im Browser sichtbaren Teils einer Webseite machen:
Erste Einfuhr:
import java.io.File;
import com.google.common.io.Files;
Dann
File src=((TakesScreenshot)driver).getScreenShotAs(OutputType.FILE);
Files.copy(src,new File("new path/pic.jpeg"));
Plus nach Selenium4 können Sie auch einen Screenshot von Webelement als:
WebElement element=driver.findElement(By.xpath("xpath
here"));
File src=element.getScreenShotAs(OutputType.FILE);
File.copy(src,new File("new path/pic.jpeg"));
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.