How to Save Screenshot in Selenium: Simple Guide
To save a screenshot in Selenium, use the
getScreenshotAs method from the TakesScreenshot interface and save the output as a file. This captures the current browser window and stores the image at your specified location.Syntax
The basic syntax to save a screenshot in Selenium involves casting the WebDriver instance to TakesScreenshot, then calling getScreenshotAs(OutputType.FILE). You then copy this file to your desired location.
TakesScreenshot: Interface to capture screenshots.getScreenshotAs(OutputType.FILE): Captures the screenshot and returns it as a file.- File copy operation: Saves the screenshot file to disk.
java
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(screenshot, new File("path/to/save/screenshot.png"));
Example
This example demonstrates how to open a webpage using Selenium WebDriver, take a screenshot of the page, and save it as a PNG file on your computer.
java
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.OutputType; import java.io.File; import org.apache.commons.io.FileUtils; public class ScreenshotExample { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); try { driver.get("https://www.example.com"); File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(screenshot, new File("screenshot.png")); System.out.println("Screenshot saved successfully."); } catch (Exception e) { e.printStackTrace(); } finally { driver.quit(); } } }
Output
Screenshot saved successfully.
Common Pitfalls
- Not casting
WebDrivertoTakesScreenshotcauses compile errors. - Forgetting to import
org.apache.commons.io.FileUtilsleads to file copy errors. - Using an incorrect file path or missing write permissions causes failures saving the screenshot.
- Not quitting the driver can leave browser processes running.
java
/* Wrong way: Missing cast */ // File screenshot = driver.getScreenshotAs(OutputType.FILE); // Compile error /* Right way: Cast to TakesScreenshot */ File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
Quick Reference
Remember these key points when saving screenshots in Selenium:
- Always cast
WebDrivertoTakesScreenshot. - Use
OutputType.FILEto get the screenshot as a file. - Use
FileUtils.copyFileto save the screenshot to disk. - Handle exceptions to avoid crashes.
- Close the browser with
driver.quit()after the test.
Key Takeaways
Cast WebDriver to TakesScreenshot to capture screenshots.
Use getScreenshotAs(OutputType.FILE) to get the screenshot file.
Save the screenshot file using FileUtils.copyFile to your desired path.
Handle exceptions and always quit the driver to free resources.
Check file paths and permissions to avoid saving errors.