Selenium+java - 截图操作
写在前面
自动化测试过程中,运行失败截图可以很好的帮我们定位问题,因此,截图操作也是我们自动化测试中的一个重要环节。
截图方法
1、通过截图类TakeScreenshout实现截图
特点:截取浏览器窗体内的内容,不包括浏览器的菜单和桌面的任务栏区域
具体示例代码如下:
public void testScreenshoutByTakesScreenshot() { driver.manage().window().maximize(); driver.get("https://www.cnblogs.com/longronglang"); driver.manage().window().maximize(); //执行屏幕截图操作 File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); //通过FileUtils中的copyFile()方法保存getScreenshotAs()返回的文件;"屏幕截图"即时保存截图的文件夹 try { FileUtils.copyFile(srcFile, new File("D:\\screenshot\\通过TakesScreenshot截图.jpg")); } catch (IOException e) { e.printStackTrace(); } }
2、通过Robot对象截屏
特点:截取浏览器窗体内的内容及浏览器的菜单和桌面的任务栏区域
具体示例代码如下:
/** * 通过Robot实现实现截图 */ @Test public void testScreenshoutByRobot() { driver.manage().window().maximize(); driver.get("https://www.cnblogs.com/longronglang"); driver.manage().window().maximize(); //调用截图方法 BufferedImage img = null; try { img = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); ImageIO.write(img, "jpg", new File("D:\\screenshot\\通过Robot截图.jpg")); } catch (AWTException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } }
3、截取目标区域图片
特点:可指定元素及区域大小截图
具体示例代码如下:
/** * 通过指定元素及区域大小截图 */ @Test public void testScreenshoutByElement() { driver.get("https://www.cnblogs.com/longronglang"); //获取页面看板娘元素 WebElement element = driver.findElement(By.cssSelector("[width='180px']")); try { FileUtils.copyFile(captureElement(element), new File("D:\\screenshot\\通过element元素及区域大小截图.jpg")); } catch (Exception e) { e.printStackTrace(); } }
效果如下
以上就是关于截图的常用方法,仅供参考,如果觉得好,可以关注我哦!
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君

分类:
Selenium +Java
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库