Capturing Screenshots in Selenium WebDriver Using Java

In automated testing, one of the most important aspects of debugging and reporting is the ability to capture screenshots at various stages of test execution. Whether you’re validating UI elements, identifying bugs, or documenting failures, screenshots serve as visual proof and improve test traceability. Selenium WebDriver, one of the most popular tools for web automation, offers a simple and effective way to take screenshots using Java.

In this blog, we’ll walk through the importance of taking screenshots in test automation and how to implement it step-by-step using Selenium WebDriver with Java.


Why Capture Screenshots in Automated Tests?

Capturing screenshots during test execution is beneficial for several reasons:

  1. Debugging: Quickly identify what went wrong by analyzing the visual state of the application at the time of failure.
  2. Reporting: Enhance test reports by embedding screenshots for pass/fail results.
  3. Documentation: Create a visual trail of the testing process, helpful for teams and stakeholders.
  4. Cross-browser validation: Visually confirm differences or issues across different browsers and screen sizes.


Prerequisites

Before we begin, ensure you have the following:

  • Java installed (JDK 8 or above)
  • Eclipse/IntelliJ or any Java IDE
  • Maven project setup (or manually added Selenium libraries)

Selenium WebDriver dependency in your pom.xml:

xml


<dependencies>

  <dependency>

    <groupId>org.seleniumhq.selenium</groupId>

    <artifactId>selenium-java</artifactId>

    <version>4.19.0</version>

  </dependency>

</dependencies>

Capturing Screenshots in Selenium WebDriver

Selenium provides the TakesScreenshot interface, which allows you to capture the current state of the browser.


Step-by-step Example

java

Copy

Edit

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import org.openqa.selenium.io.FileHandler;


import java.io.File;

import java.io.IOException;


public class ScreenshotExample {


    public static void main(String[] args) {

        // Set the path to your WebDriver

        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");


        // Initialize browser

        WebDriver driver = new ChromeDriver();


        try {

            // Navigate to URL

            driver.get("https://example.com");


            // Take screenshot

            TakesScreenshot screenshot = (TakesScreenshot) driver;

            File srcFile = screenshot.getScreenshotAs(OutputType.FILE);


            // Define destination file

            File destFile = new File("screenshots/example_screenshot.png");


            // Save the screenshot to the destination

            FileHandler.copy(srcFile, destFile);


            System.out.println("Screenshot saved successfully.");

        } catch (IOException e) {

            System.out.println("Failed to capture screenshot: " + e.getMessage());

        } finally {

            // Close the browser

            driver.quit();

        }

    }

}

Organizing Screenshots

You can enhance the screenshot utility by:


Generating filenames with timestamps for uniqueness:


java

Copy

Edit

String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());

File destFile = new File("screenshots/screenshot_" + timestamp + ".png");

Capturing screenshots only on test failure (e.g., in @AfterMethod using TestNG)


Integration with TestNG Reports

TestNG allows you to integrate screenshots into your test reports. You can capture a screenshot in the onTestFailure() method using ITestListener interface.


Final Thoughts

Capturing screenshots in Selenium WebDriver using Java is a simple yet powerful way to enhance the reliability and transparency of your automated tests. Whether used for debugging, documentation, or reporting, screenshots give testers and developers valuable insight into application behavior.


Make it a practice to capture and store screenshots smartly in your test automation framework — it will save time, improve accuracy, and make your reports far more informative.

Learn Selenium with Java Training
Read More: Handling JavaScript Executions in Selenium WebDriver7

Visit Our IHUB Talent Institute Hyderabad
Get Direction 

Comments

Popular posts from this blog

How to Use Tosca's Test Configuration Parameters

Using Hibernate ORM for Fullstack Java Data Management

Creating a Test Execution Report with Charts in Playwright