Latest post from this blog

Test Scenarios vs. Test Cases: Understanding the Basics

What Are Test Scenarios Test scenarios represent high-level ideas or conditions that need to be validated to ensure the application works as expected. They provide a broader perspective and are typically used during the test planning phase. Purpose: To capture the "what to test" without going into granular details. Example of a Test Scenario: Verify that a user can successfully log in to the application using valid credentials. Verify the behavior of the login page when invalid credentials are entered. Verify the application behavior when the login button is clicked without entering any credentials. What Are Test Cases Test cases are detailed documents that define the specific steps to execute a test. They cover inputs, execution steps, expected results, and actual outcomes. Purpose: To guide the tester step-by-step on "how to test." Example of a Test Case (for the first scenario): Test Case ID TC_01_Login_Valid_Credentials Test Scenario Verify user login with val...

How to take a screenshot in selenium

Introduction

To take a screenshot using Selenium in Java, you can use the TakesScreenshot interface.

TakesScreenshot interface in Selenium is used to capture screenshots of the current browser window. It provides the getScreenshotAs method, which allows you to obtain a screenshot and handle it as a file. 

Steps to Take a Screenshot:

Here’s a simplified way to take a screenshot using Selenium with Java:

1.Set Up WebDriver: Make sure you have the appropriate WebDriver (e.g., ChromeDriver for Chrome) and Selenium libraries set up in your project.

2.Initialize WebDriver: Instantiate the WebDriver for the browser you want to use and navigate to the webpage where you want to capture the screenshot.

// Use the driver for your chosen browser

WebDriver driver = new ChromeDriver(); 

// Navigate to the desired webpage

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

3.Cast WebDriver to TakesScreenshot: Selenium’s WebDriver interface does not include screenshot methods. You need to cast the WebDriver instance to the TakesScreenshot interface.

TakesScreenshot screenshot = (TakesScreenshot) driver;

4.Capture and Save Screenshot: Use the getScreenshotAs(OutputType.FILE) method to capture the screenshot, which returns a File object.

FileUtils.copyFile() from the Apache Commons IO library to copy the screenshot from the source file to the desired destination.

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

   File destinationFile = new File("screenshot.png");

   // Requires Apache Commons IO library

   FileUtils.copyFile(screenshotFile, destinationFile);

5.Handle Exceptions: Include error handling to manage any IOExceptions that might occur while saving the file.

   try {

       FileUtils.copyFile(screenshotFile, destinationFile);

   } catch (IOException e) {

       e.printStackTrace();

   }

6.Close the Browser: Always close the browser after the test to free up resources.

   driver.quit(); // Closes the browser


7.Take a Full Page Screenshot

import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.io.FileHandler;

import java.io.File;
import java.time.Duration;

public class Screenshot {

public static void main(String[] args) {
// Set the ChromeDriver executable path
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

// Initialize WebDriver
WebDriver driver = new ChromeDriver();

try {
// Maximize the browser window
driver.manage().window().maximize();

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

// Wait for the page to load
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

// Full-page screenshot
takeFullPageScreenshot(driver, "screenshots/full_page_screenshot.png");

// Screenshot of a specific element
WebElement element = driver.findElement(By.xpath("//E1")); // Replace with your element locator
takeElementScreenshot(element, "screenshots/element_screenshot.png");

// Save screenshot in Base64 format
saveScreenshotAsBase64(driver);

} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
} finally {
// Quit the browser
driver.quit();
}
}

// Method to take a full-page screenshot
public static void takeFullPageScreenshot(WebDriver driver, String filePath) {
try {
// Convert WebDriver instance to TakesScreenshot
TakesScreenshot screenshot = (TakesScreenshot) driver;

// Take the screenshot and save it as a file
File srcFile = screenshot.getScreenshotAs(OutputType.FILE);

// Save the screenshot to the specified location
FileHandler.copy(srcFile, new File(filePath));

System.out.println("Full-page screenshot saved at: " + filePath);
} catch (Exception e) {
System.out.println("Failed to take full-page screenshot: " + e.getMessage());
}
}

// Method to take a screenshot of a specific element
public static void takeElementScreenshot(WebElement element, String filePath) {
try {
// Capture screenshot of the specific element
File srcFile = element.getScreenshotAs(OutputType.FILE);

// Save the screenshot to the specified location
FileHandler.copy(srcFile, new File(filePath));

System.out.println("Element screenshot saved at: " + filePath);
} catch (Exception e) {
System.out.println("Failed to take element screenshot: " + e.getMessage());
}
}

// Method to save a screenshot in Base64 format
public static void saveScreenshotAsBase64(WebDriver driver) {
try {
// Take the screenshot and save it as Base64
String base64Screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);

System.out.println("Screenshot in Base64 format: " + base64Screenshot);
} catch (Exception e) {
System.out.println("Failed to save screenshot as Base64: " + e.getMessage());
}
}
}


Comments

Popular posts from this blog

Common Exception in Selenium

Test Scenarios vs. Test Cases: Understanding the Basics

Handling Shadow DOM in Selenium WebDriver

Handling HTTPS Websites and SSL Certificate Errors in Selenium

Normalize-space Function In Xpath