1.简介
在日常的软件开发和测试的工作中,屏幕截图是一种常用、常见的工具,用于记录应用程序或者网页的状态、错误信息等。Playwright 提供了一种简单而强大的方式来实现屏幕截图,帮助开发人员和测试人员轻松捕获和分析应用程序的界面。本文将介绍如何使用 Playwright 实现屏幕截图。而且这个系列的文章也讲解和分享了差不多三分之一吧,突然有小伙伴或者童鞋们问道playwright有没有截图的方法。想必看过python+playwright系列的文章已经有了自己答案,没有看过的宏哥这里告诉你答案当然是:肯定有的。宏哥回过头来看看确实这个非常基础的知识点还没有讲解和分享,差点遗漏了。那么在这个契机下就把它插队分享和讲解一下。Playwright提供了一个截屏的API:**page.screenshot();**。使用该API,只需要指定截图的图片的保存路径及文件名即可。如果仅指定文件名,默认保存在当前目录。
2.截图语法
截图介绍官方API的文档地址:playwright.dev/java/docs/s…
2.1截图参数
screenshot方法可以进行截图,参数如下:
timeout:以毫秒为单位的超时时间,0为禁用超时
path:设置截图的路径
type:图片类型,默认jpg
quality:像素,不适用于jpg
omit_background: 隐藏默认白色背景,并允许捕获具有透明度的屏幕截图。不适用于“jpeg”图像。
full_page:如果为true,则获取完整可滚动页面的屏幕截图,而不是当前可见的视口。默认为
`假`。
clip:指定结果图像剪裁的对象clip={'x': 10 , 'y': 10, 'width': 10, 'height': 10}
3.按照元素截图(截取页面一部分)
有时候,我们可能只想截取页面的一部分,那么,Playwright也支持将想要截取的部分筛选出来,然后调用截图API进行截图。参数同上,只是调用截图方法的对象不同,快速截图是page,按照元素截图是page下的元素,有时截取单个元素的屏幕截图很有用。语法如下:
page.locator(".header").screenshot(new Locator.ScreenshotOptions().setPath(Paths.get("screenshot.png")));
3.1实战示例
宏哥这里以访问百度首页,然后定位百度的搜索输入框,最后进行截图,给小伙伴或者同学们来快速演示一下。
3.1.1代码设计
3.1.2参考代码
package com.bjhg.playwright;
import java.nio.file.Paths;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)
*
* 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-39-屏幕截图利器-下篇(详细教程)
*
* 2026年01月05日
*/
public class Test_Screenshots {
public static void main(String[] args) {
// TODO Auto-generated method stub
try (Playwright playwright = Playwright.create()) {
//1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(300));
//2.创建context
BrowserContext context = browser.newContext();
//创建page
Page page = context.newPage();
page.screenshot();
//3.浏览器访问demo
page.navigate("https://www.baidu.com");
Thread.sleep(300);
//4.首先定位输入框,然后屏幕截图
page.locator(".chat-input-container").screenshot(new Locator.ScreenshotOptions().setPath(Paths.get("screenshot.png")));
Thread.sleep(1000);
System.out.println("Test Pass");
//5.关闭page
page.close();
//6.关闭browser
browser.close();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.1.3运行代码
1.运行代码,右键Run As->Java Application,就可以看到控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作(访问百度首页,然后截图,打开图片查看发现就是截的输入框)。如下图所示:
4.捕捉到缓冲区
使用base64对图片数据进行加密、解密。除了可以将页面截图保存为图片之外,也可以使用base64对图片数据进行加密和解密,将图片转换为一串字符。您可以获取包含图像的缓冲区并对其进行后处理或将其传递给第三方像素差异工具,而不是写入文件。语法如下:
byte[] buffer = page.screenshot();
System.out.println(Base64.getEncoder().encodeToString(buffer));
4.1实战示例
宏哥这里以访问百度首页,然后进行捕获到缓冲区,然后宏哥将缓冲区的内容进行复原。给小伙伴或者同学们来快速演示一下。
4.1.1代码设计
4.1.2参考代码
package com.bjhg.playwright;
import java.nio.file.Paths;
import java.util.Base64;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)
*
* 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-39-屏幕截图利器-下篇(详细教程)
*
* 2026年01月05日
*/
public class Test_Screenshots {
public static void main(String[] args) {
// TODO Auto-generated method stub
try (Playwright playwright = Playwright.create()) {
//1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(300));
//2.创建context
BrowserContext context = browser.newContext();
//创建page
Page page = context.newPage();
page.screenshot();
//3.浏览器访问demo
page.navigate("https://www.baidu.com");
Thread.sleep(300);
//4.捕获到缓冲区(应该是转变成base64字节流)
byte[] buffer = page.screenshot();
System.out.println(Base64.getEncoder().encodeToString(buffer));
Thread.sleep(1000);
System.out.println("Test Pass");
//5.关闭page
page.close();
//6.关闭browser
browser.close();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4.1.3运行代码
1.运行代码,右键Run As->Java Application,就可以看到控制台输出((转换为一串base64编码字符并输出)),如下图所示:
2.运行代码后电脑端的浏览器的动作。如下图所示:
4.1.4在线Base64转图片
随便百度一个**在线Base64转图片**的地址,然后将我们上边控制台打印的Base64的字符串复制后,粘贴到工具里,将其转换成图片看看是不是我们的截图结果,转换成图片发现果然是我们的截图。如下图所示:
5.小结
好了,今天时间不早了,关于playwright的截图就先介绍讲解到这里,到此截图基础知识就差不多了,感谢您耐心的阅读!!!