📌  相关文章
📜  如何使用Java在Selenium WebDriver 中截取屏幕截图?

📅  最后修改于: 2022-05-13 01:54:45.557000             🧑  作者: Mango

如何使用Java在Selenium WebDriver 中截取屏幕截图?

Selenium WebDriver是一组开源 API,用于自动测试 Web 应用程序。为了在Selenium中捕获屏幕截图,必须使用 Takes Screenshot 方法。这会通知 WebDriver 它应该在Selenium中截取屏幕截图存储它。 Selenium WebDriver工具用于自动化 Web 应用程序测试以验证它是否按预期工作。它支持多种浏览器。在这里,我们将以 chrome 为例。

句法:

File file = ((TakesScreenshot) driver) ;

在这里,我们将学习如何在selenium Web 驱动程序中截取屏幕截图并使用Java绑定突出显示元素。

错误分析需要屏幕截图,尤其是在测试用例失败的情况下。每当测试用例失败时,我们需要一些附件来验证该失败。 Selenium可以在执行过程中自动截图,我们也可以标记一个边框来突出显示该元素。

在selenium web 驱动程序中截取屏幕截图的步骤:

1.截屏并以文件格式存储

2.使用 CopyFile 方法将屏幕截图复制到某个位置

3.在元素周围创建边框:使用 JavaScript 执行器,我们可以在所需元素周围创建边框。

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("arguments[0].style.border = '3px solid red'", Element);

实现部分参考下面完整代码

Java
// Java program how to take
// a screenshot in Selenium
// WebDriver
  
import java.io.*;
  
class GFG {
    public static void main(String[] args)
    {
        // Setting webDriver to chrome
        System.setProperty("webdriver.chrome.driver",
                           "driver path");
        driver = new ChromeDriver();
        driver.get("https://www.google.co.in");
  
        WebElement Element = driver.findElement(
            By.xpath("//input[@name='q']"));
  
        // Assisgnments to webDriver
        MakeBorder(Element);
        Thread.sleep(2000);
        TakeScreenshot("GooglePage");
        driver.quit();
    }
  
    // Function to Take screenshot
    public static void TakeScreenshot(String FileName)
        throws IOException
    {
        // Creating instance of File
        File File = ((TakesScreenshot)driver)
                        .getScreenshotAs(OutputType.FILE);
  
        FileUtils.copyFile(File,
                           new File("image location"
                                    + FileName + ".jpeg"));
    }
  
    // Function to Make border
    public static void MakeBorder(WebElement Element)
    {
  
        JavascriptExecutor js = (JavascriptExecutor)driver;
        js.executeScript(
            "arguments[0].style.border = '3px solid red'",
            Element);
    }
}


输出