如何使用 Selenium WebDriver 部分截图(帧)?


每当我们在测试过程中遇到故障时,一种常见的方式是在出现与预期结果偏差的位置拍摄屏幕截图。因此,将屏幕截图作为创建缺陷的附件被认为是一个必须的步骤。

在为大量测试用例执行自动化时,拍摄屏幕截图对于推断一个测试用例为何失败(对于开发和测试团队来说)至关重要。当他们对故障进行调试时,查阅屏幕截图并得出结论,故障是否是因为脚本问题还是应用程序的缺陷。

有时,我们可能需要捕获特定元素的屏幕截图。在这里,我们必须捕获整个页面的屏幕截图,然后再根据元素的位置和尺寸对图像进行裁剪。

示例

代码实施。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.Point;
import java.awt.image.BufferedImage;
public class ScrshtElemnt{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url ="https://tutorialspoint.com/about/about_careers.htm";
      driver.get(url);
      driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
      // identify logo
      WebElement l=driver.findElement(By.xpath( "//*[@class='top-logo']"));
      // capture screenshot and store the image
      File s = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
      BufferedImage f = ImageIO.read(s);
      //location of webelement
      Point location= l.getLocation();
      // Dimension of element
      int w= l.getSize().getWidth();
      int h=l.getSize().getHeight();
      // Image Crop
      BufferedImage cImage= f.getSubimage(location.getX(), location.getY(),  w, h);
      ImageIO.write(cImage, "png", s);
      FileUtils.copyFile(s, new File("tutorialspointlogo.png"));
      driver.quit();
   }
}

输出

更新于: 2020 年 8 月 28 日

513 次浏览

开启你的 职业生涯

完成课程获得认证

开始学习
广告