Selenium web自动化测试截屏

自动化测试运行过程中,有些地方出现了Error,此时我们希望可以将当前运行的屏幕的截图保存下来,方便开发者后续进行调试与修复


不说废话直接开干(python实现)

1、webdriver的截屏

通过源码我们可以看到,webdriver向外提供的4种截屏方法,其中我们常用的就get_screenshot_as_file()、save_screenshot()两种,使用方法也很简单传入需要保存文件的绝对路径,通过下图我们可以看到,save_screenshot()其实是调用的也是get_screenshot_as_file()


2、webelement截屏

通过源码我们可以看到,webelement向外提供的3种截屏方法,其中我们常用的就screenshot(),使用方法也很简单传入需要保存文件的绝对路径。


注:webdriver和webelement区别为:一个截取当前窗口,一个截取当前元素。


不说废话直接开干(java实现)

import org.apache.commons.io.FileUtils;import org.openqa.selenium.Dimension;import org.openqa.selenium.*;import org.openqa.selenium.Point;import javax.annotation.Resource;import javax.imageio.ImageIO;import java.awt.Rectangle;import java.awt.image.BufferedImage;import java.io.File;public class ElementScreenshot1 {    public void captureElement1(WebElement element, WebDriver driver) throws Exception {        File screen = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);        BufferedImage img = ImageIO.read(screen);        Dimension size = element.getSize();        // 创建一个矩形使用上面的高度,和宽度        Rectangle rect = new Rectangle(size.width, size.height);        // 得到元素的坐标        Point p = element.getLocation();        BufferedImage dest = img.getSubimage(p.getX(), p.getY(), rect.width, rect.height);        // 存为png格式        ImageIO.write(dest, "png", new File("testa"));    }    public void captureElement2( WebDriver driver) throws Exception {        File screen = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);        FileUtils.copyFile(screen, new File("Screenshots.png"));    }}
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章