Selenium - java - 屏幕截图

文档地址

Selenium 浏览器自动化项目 | Selenium

安装

        <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.19.1</version></dependency>

使用

创建WebDriver实例

以chrome为例, 创建

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

打开目标页面

driver.get("https://www.selenium.dev/selenium/web/web-form.html");

捕捉截图

首先要开启bidi功能

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

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

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

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

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

        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文件中

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/817104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDP之Backstage - 环境搭建

0. 目录 1. 前言2. 环境准备&#xff08;Windows10下&#xff09;2.1 安装nvm2.2 git和docker安装 3. 创建模板项目3.1 典型错误: fails on the yarn install step3.2 再次启动3.3 验证 4. 相关 1. 前言 本不想写这篇&#xff0c;因为看着官网文档写着挺简单的&#xff0c;但实…

禅道登录/创建版本/编辑版本接口 【禅道版本 20.0.beta2】

登录获取token import requestsurl = "http://192.168.1.234:6061/api.php/v1/tokens" payload = {"account": "jenkins","password": "jenkins123" } headers = {}response = requests.request

UI设计的未来发展

UI 设计的未来发展&#xff0c;实际上是互联网行业未来发展的折射。毕竟&#xff0c;UI 设计始终是互联网行业的一部分&#xff0c;因此在互联网行业未来发展的可能性来看&#xff0c;UI 设计同样会跟随着互联网的部分稳步前进。曾经&#xff0c;在最初的图形化界面出现的时候&…

线上剧本杀小程序发展趋势如何?

随着几年的快速发展&#xff0c;剧本杀行业进入到了大众的视野&#xff0c;不过从2022年开始&#xff0c;行业就开始处于下滑趋势&#xff0c;但是行业反而变得更加的规范化。 经历过下滑发展后&#xff0c;剧本杀行业已经趋向专业化、精品化发展&#xff0c;行业正在复苏&…

高基报表是什么?高校各部门如何快速填报高基表?

高基报表——全称是《高等教育事业基层统计报表》&#xff08;以下简称《高基报表》&#xff09;&#xff0c;作为高等院校基本情况报表的代表&#xff0c;承载着学校办学实力的真实写照。填报高基报表是一项细致入微的工作&#xff0c;不仅关系到学校的科学管理和决策研究&…

第一节:什么是操作系统

什么是操作系统 一、一台计算机的组成部分1、计算机能干啥2、谈谈计算机硬件 二、什么是操作系统三、学习操作系统的层次 一、一台计算机的组成部分 如下图所示&#xff1a; 这就是就是构成一台计算机的组成部分 1、计算机能干啥 ∙ \bullet ∙计算机是我们专业吃饭的家伙&a…

前端知识学习笔记-六(vue)

简介 Vue是前端优秀框架是一套用于构建用户界面的渐进式框架 Vue优点 Vue是目前前端最火的框架之一 Vue是目前企业技术栈中要求的知识点 vue可以提升开发体验 Vue学习难度较低 Vue开发前准备 一、nodejs环境 Nodejs简介 Nodejs诞生于2009年&#xff0c;主攻服务器方向&#x…

Spring Message

EnableJms注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(JmsBootstrapConfiguration.class) public @interface EnableJms { } @Import(JmsBootstrapConfiguration.class) @Configuration @Role(BeanDefinition.ROLE_INFRASTRUC…

数据结构OJ题——栈和队列

1. 用栈实现队列&#xff08;OJ链接&#xff09; 题目描述&#xff1a;请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回…

Gateway 基本配置指南:构建高效的网络接入网关

简介&#xff1a; Gateway 是一个常用的网络接入网关&#xff0c;它可以帮助组织实现安全、可靠和高性能的网络连接。本文将介绍 Gateway 的基本配置&#xff0c;帮助读者了解如何正确配置和部署一个高效的 Gateway 网关。 1.网络拓扑规划&#xff1a; 在配置 Gateway 前&#…

锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测。 参考资料 [1] h…

Java/Android 汉字转拼音

Java 汉字转拼音 1.TinyPinyin 功能&#xff1a; 适用于Java和Android的快速、低内存占用的汉字转拼音库。 特性&#xff1a; 生成的拼音不包含声调&#xff0c;均为大写&#xff1b;支持自定义词典&#xff0c;支持简体中文、繁体中文&#xff1b;执行效率很高(Pinyin4J的…

Nginx配置大全【六大使用场景、七大负载均衡策略、四大负载健康检查】

目录 基础配置信息应用场景一&#xff1a;配置web服务器应用场景二&#xff1a;反向代理服务器应用场景三&#xff1a;URL重定向应用场景四&#xff1a;防盗链应用场景五&#xff1a;根据设备类型重定向/代理/访问 不同域名/资源应用场景六&#xff1a;&#xff01;负载均衡服务…

Python数据分析案例42——基于Attention-BiGRU的时间序列数据预测

承接上一篇的学术缝合&#xff0c;排列组合模型&#xff0c;本次继续缝合模型演示。 Python数据分析案例41——基于CNN-BiLSTM的沪深300收盘价预测-CSDN博客 案例背景 虽然我自己基于各种循环神经网络做时间序列的预测已经做烂了.....但是还是会有很多刚读研究生或者是别的领…

最新版守约者二级域名分发系统

主要功能 二级域名管理&#xff1a; 我们的系统提供全面的二级域名管理服务&#xff0c;让您轻松管理和配置二级域名。 域名分发&#xff1a;利用我们先进的域名分发技术&#xff0c;您可以自动化地分配和管理域名&#xff0c;确保每个用户或客户都能及时获得所需的域名资源。…

leetcode热题HOT 51. N 皇后

一、问题描述&#xff1a; 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问…

python——字典(dict)

概念 字典里面的数据是以键值对形式出现&#xff0c;字典数据和数据顺序没有关系。 语法 数据为键值对形式出现&#xff0c;各个键值对之间用逗号隔开 d dict() d1 {"name":"zhanghao","age":12}方法 #mermaid-svg-nk6Q3uUsDPRNAJ0s {font…

SpringBoot基于RabbitMQ实现消息延迟队列方案

知识小科普 在此之前&#xff0c;简单说明下基于RabbitMQ实现延时队列的相关知识及说明下延时队列的使用场景。 延时队列使用场景 在很多的业务场景中&#xff0c;延时队列可以实现很多功能&#xff0c;此类业务中&#xff0c;一般上是非实时的&#xff0c;需要延迟处理的&a…

ipsec的特点和优点

IPsec&#xff08;Internet Protocol Security&#xff09;是一种用于保护 IP 网络通信安全的协议套件&#xff0c;它具有许多特点和优点&#xff0c;包括&#xff1a; 加密通信&#xff1a; IPsec 提供了对 IP 数据包的加密功能&#xff0c;可以确保数据在传输过程中是加密的…

Opencv | Opencv 基于图像的运算

目录 一. OpenCV 基于图像的运算1 cv.item( ) 获取图像某个位置的像素值2. cv. itemset( ) 修改图像某个位置的像素值3. cv.split( ) / cv.merge( ) 通道的分割与合并4. cv.copyMakeBorder ( ) 添加边框5. cv.addWeighted ( ) 图像融合 / 权重和6. cv.threshold 二值化操作7. c…