在自动化测试运行过程中,有些地方出现了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 条评论) “” |