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());

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

相关推荐
Wang's Blog4 分钟前
Java 项目实战: 外卖平台优化-YApi接口管理平台与文档导入导出
java·开发语言·yapi
专业程序开发源9 分钟前
django新闻推荐系统70655-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·django·课程设计
vx_Biye_Design25 分钟前
springboot一站式旅游管理平台81037-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·课程设计·express·旅游
写后端的胖头鱼30 分钟前
时间复杂度 & 空间复杂度
java·数据结构·算法·时间复杂度·空间复杂度
嵌入式学习菌33 分钟前
ESP32 ModbusTCP 分片缓存
java·后端·spring
vx_Biye_Design34 分钟前
springboot宠物寄养服务预约与监管系统82684-计算机课程设计、毕业设计
java·vue.js·spring boot·elasticsearch·课程设计·express·宠物
程序员小杰@41 分钟前
Spring Boot 常用注解分类速记
java·spring boot·后端
vx_Biye_Design1 小时前
springboot小学生英语学习APP62773-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·学习·课程设计
吴声子夜歌1 小时前
Nginx应用与运维——Nginx日志管理
java·运维·nginx