Java selenium 全屏截图和按元素截图介绍

最近开发自动化测试工具,要写图片验证码自动识别,识别过程首先要先进行图片验证码的截图,于是网上找了一些截图方法,但是我发现,大多数的截图方式都是先全屏截图,然后按元素在页面的位置和大小进行裁剪,这种方式有个弊端:全屏图片尺寸是按电脑屏幕分辨率来的,网页尺寸是前端代码设定的,这样会导致裁剪的位置不是理想位置

所以总结了一下截图方法:

方法一

全屏截图,然后裁剪,这种方式图片尺寸按电脑屏幕分辨率来的,与网页实际尺寸有差异,裁剪后的效果不好:

//截全屏图
File sourceFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
 //保存图片
try {
	FileUtils.copyFile(sourceFile, new File(sourceImg + "img.jpg"));
} catch (IOException e) {
    e.printStackTrace();
}
//裁剪图片
BufferedImage img = null;
try {
   img = ImageIO.read(new File(sourceImg + "img.jpg"));
} catch (IOException e) {
   e.printStackTrace();
}
int w = element.getSize().getWidth();
int h = element.getSize().getHeight();
Point point = element.getLocation();
//从元素左上角坐标开始,按照元素的高宽对img进行裁剪为符合需要的图片
BufferedImage dest = img.getSubimage(point.getX(), point.getY(), w, h);
try {
   ImageIO.write(dest,"jpg", new File(sourceImg+"result.jpg"));
} catch (IOException e) {
   e.printStackTrace();
}

效果图(请忽略去除干扰的效果):在这里插入图片描述

方法二

按元素截图:

//按元素截图
File sourceFile = element.getScreenshotAs(OutputType.FILE);
//保存图片
try {
   FileUtils.copyFile(sourceFile, new File(sourceImg + "img.jpg"));
} catch (IOException e) {
   e.printStackTrace();
}

效果图:
效果图

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Java 语言结合 Selenium WebDriver 来实现全屏截图。下面是一个示例代码: ```java import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import java.io.File; import java.io.IOException; public class FullScreenScreenshotExample { public static void main(String[] args) { // 设置 ChromeDriver 路径 System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); // 创建 ChromeDriver 实例 WebDriver driver = new ChromeDriver(); // 打开网页 driver.get("https://www.example.com"); // 将 WebDriver 转换为 TakesScreenshot 接口类型 TakesScreenshot screenshot = (TakesScreenshot) driver; // 调用 getScreenshotAs 方法获取截图文件 File screenshotFile = screenshot.getScreenshotAs(OutputType.FILE); try { // 将截图文件保存到指定路径 // 这里将截图保存为 "screenshot.png" org.apache.commons.io.FileUtils.copyFile(screenshotFile, new File("path/to/screenshot.png")); } catch (IOException e) { e.printStackTrace(); } // 关闭浏览器 driver.quit(); } } ``` 在上面的示例代码中,首先需要设置 ChromeDriver 的路径。然后创建 ChromeDriver 实例并打开一个网页。接下来,将 WebDriver 对象转换为 TakesScreenshot 接口类型,并调用 getScreenshotAs 方法获取截图文件。最后,使用 FileUtils 类中的 copyFile 方法将截图文件保存到指定路径。 请注意,你需要下载并配置 ChromeDriver 才能运行上述示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值