1.简介
在日常的软件开发和测试的工作中,屏幕截图是一种常用、常见的工具,用于记录应用程序或者网页的状态、错误信息等。Playwright 提供了一种简单而强大的方式来实现屏幕截图,帮助开发人员和测试人员轻松捕获和分析应用程序的界面。本文将介绍如何使用 Playwright 实现屏幕截图。而且这个系列的文章也讲解和分享了差不多三分之一吧,突然有小伙伴或者童鞋们问道playwright有没有截图的方法。想必看过python+playwright系列的文章已经有了自己答案,没有看过的宏哥这里告诉你答案当然是:肯定有的。宏哥回过头来看看确实这个非常基础的知识点还没有讲解和分享,差点遗漏了。那么在这个契机下就把它插队分享和讲解一下。Playwright提供了一个截屏的API: page.screenshot(); 。使用该API,只需要指定截图的图片的保存路径及文件名即可。如果仅指定文件名,默认保存在当前目录。
2.截图语法
截图介绍官方API的文档地址:playwright.dev/java/docs/s...
2.1截图参数
bash
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除了可以截取当前屏幕,还可以截长图,也可以对某个元素截图,是不是炒鸡方便。在 Playwright 中,要实现屏幕截图非常简单。你只需要调用 page 对象的 screenshot()
方法,并指定保存截图的文件路径即可。这是捕获屏幕截图并将其保存到文件中的快速截图(如果仅仅截取当前屏幕(浏览器)上能看到的部分)语法如下:
less
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("screenshot.png")));
3.1实战示例
宏哥这里以访问百度首页,然后进行截图,给小伙伴或者同学们来快速演示一下。
3.1.1代码设计

3.1.2参考代码
java
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.Page;
import com.microsoft.playwright.Playwright;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)
*
* 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-38-屏幕截图利器-上篇(详细教程)
*
* 2025年09月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.screenshot(new Page.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.整页截图(截取整个页面)
有时候,页面可能会比较长,一个屏幕无法全部展示出来。如果想截取整个页面,怎么办呢?设置full_page=True
参数 screenshot 是一个完整的可滚动页面的屏幕截图,给人一种错觉:就好像你有一个非常高的屏幕并且页面可以完全容纳下它。
playwright屏幕截图语法如下:
less
page.screenshot(new Page.ScreenshotOptions()
.setPath(Paths.get("screenshot.png"))
.setFullPage(true));
4.1实战示例
宏哥这里以访问宏哥博客园的首页为例,然后进行截图,给小伙伴或者同学们来讲解演示一下。其实很简单就是在前边的代码中加一个参数即可搞定。
我们首先来看一下宏哥的博客园首页,一屏幕完全是放不下的,需要滚动才可以看到后边的信息,以及底部内容。如下图所示:

4.1.1代码设计

4.1.2参考代码
java
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.Page;
import com.microsoft.playwright.Playwright;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)
*
* 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-38-屏幕截图利器-上篇(详细教程)
*
* 2025年09月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.cnblogs.com/du-hong");
Thread.sleep(300);
//4.屏幕截图
page.screenshot(new Page.ScreenshotOptions()
.setPath(Paths.get("screenshot.png"))
.setFullPage(true));
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,就可以看到控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作(访问博客园,然后截图,宏哥将图片缩小,才看到截图的全部)。如下图所示:

5.小结
好了,今天时间不早了,关于playwright的截图就先介绍讲解到这里,下一篇继续介绍截图的其他操作方法。感谢您耐心的阅读!!!