Selenium - java - 屏幕截图

文档地址

Selenium 浏览器自动化项目 | Selenium

安装

xml 复制代码
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.19.1</version>
        </dependency>

使用

创建WebDriver实例

以chrome为例, 创建

java 复制代码
ChromeOptions co = new ChromeOptions();
co.setCapability("webSocketUrl", true);  //BiDi功能需要添加这个配置
co.addArguments("--headless");           //无头浏览器
WebDriver driver = new ChromeDriver(chromeOptions);


/*********************************************
*            操作                            *
**********************************************/

driver.quit();

打开目标页面

java 复制代码
driver.get("https://www.selenium.dev/selenium/web/web-form.html");

捕捉截图

首先要开启bidi功能

截图可以选择截取一个页面的图, 也可以选择某一元素进行截图

先看一个截取某一页面的代码例子:

java 复制代码
// 首先创建一个BrowserContext对象
 BrowsingContext bc = new BrowsingContext(driver, driver.getWindowHandle());
String base64Str = bc.captureScreenshot();

截图返回的数据是一个图片的base64编码字符串

如果将截图文件保存到一个文件中, 可以参考如下代码

java 复制代码
        byte[] decode = Base64.getDecoder().decode(base64Str);

        try(FileOutputStream fos = new FileOutputStream(new File("test.png"))){
            fos.write(decode);
            fos.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

这段代码会把截图文件保存为test.png文件中

如果想要截取某一个元素节点截图, 我们可以使用如下代码

java 复制代码
WebElement element = driver.findElement(new By.ByClassName("py-2"));
String base64Str = bc.captureElementScreenshot(((RemoteWebElement)element).getId());

这样, 我们就可以把左侧表单元素截图保存下来

相关推荐
dragoooon3417 分钟前
[Linux——Lesson23.线程概念与控制:线程基础]
java·开发语言·jvm
带刺的坐椅26 分钟前
Solon Web 的“分身术”:单应用多端口监听,化身多重服务
java·web·solon·端口·单体多模块
装不满的克莱因瓶42 分钟前
【项目亮点】基于EasyExcel + 线程池解决POI文件导出时的内存溢出及超时问题
java·jvm·excel·线程池·async·虚拟机·easyexcel
Lisonseekpan44 分钟前
IntelliJ IDEA 快捷键全解析与高效使用指南
java·ide·后端·intellij-idea
Fantasydg1 小时前
外卖项目 day01
java
SeaTunnel1 小时前
结项报告完整版:Apache SeaTunnel 支持 Flink 引擎 Schema Evolution 功能
java·大数据·flink·开源·seatunnel
q***71851 小时前
常见的 Spring 项目目录结构
java·后端·spring
元亓亓亓1 小时前
考研408--操作系统--day4--进程同步&互斥&信息量机制
java·数据库·考研·操作系统·408
武子康1 小时前
Java-169 Neo4j CQL 实战速查:字符串/聚合/关系与多跳查询
java·开发语言·数据库·python·sql·nosql·neo4j
q***23571 小时前
记录 idea 启动 tomcat 控制台输出乱码问题解决
java·tomcat·intellij-idea