《刚刚问世》系列初窥篇-Java+Playwright自动化测试-38-屏幕截图利器-上篇(详细教程)

时间:2025-09-04 13:30:02来源:互联网

下面小编就为大家分享一篇《刚刚问世》系列初窥篇-Java+Playwright自动化测试-38-屏幕截图利器-上篇(详细教程),具有很好的参考价值,希望对大家有所帮助。

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除了可以截取当前屏幕,还可以截长图,也可以对某个元素截图,是不是炒鸡方便。在 Playwright 中,要实现屏幕截图非常简单。你只需要调用 page 对象的 screenshot() 方法,并指定保存截图的文件路径即可。这是捕获屏幕截图并将其保存到文件中的快速截图(如果仅仅截取当前屏幕(浏览器)上能看到的部分)语法如下:

page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("screenshot.png")));

3.1实战示例

宏哥这里以访问百度首页,然后进行截图,给小伙伴或者同学们来快速演示一下。

3.1.1代码设计

image

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.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,就可以看到控制台输出,如下图所示:

image

2.运行代码后电脑端的浏览器的动作(访问百度首页)。如下图所示:

GIF+2025-8-29+11-46-59

4.整页截图(截取整个页面)

有时候,页面可能会比较长,一个屏幕无法全部展示出来。如果想截取整个页面,怎么办呢?设置full_page=True 参数 screenshot 是一个完整的可滚动页面的屏幕截图,给人一种错觉:就好像你有一个非常高的屏幕并且页面可以完全容纳下它。

playwright屏幕截图语法如下:

page.screenshot(new Page.ScreenshotOptions()
  .setPath(Paths.get("screenshot.png"))
  .setFullPage(true));

4.1实战示例

宏哥这里以访问宏哥博客园的首页为例,然后进行截图,给小伙伴或者同学们来讲解演示一下。其实很简单就是在前边的代码中加一个参数即可搞定。

我们首先来看一下宏哥的博客园首页,一屏幕完全是放不下的,需要滚动才可以看到后边的信息,以及底部内容。如下图所示:

GIF+2025-8-29+13-29-50

4.1.1代码设计

image

4.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.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,就可以看到控制台输出,如下图所示:

image

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

GIF+2025-8-29+13-34-46

5.小结

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

本站部分内容转载自互联网,如果有网站内容侵犯了您的权益,可直接联系我们删除,感谢支持!