做软件测试的时候,经常遇到程序突然报错,但问题又不好复现。这时候如果能自动把出错时的界面截下来,排查起来就省事多了。现在很多自动化测试工具都支持截图功能,只要稍微设置一下,就能在关键步骤自动保存屏幕画面。
为什么需要自动化截图?
比如你在测试一个电商网站的下单流程,从加购物车到支付完成有五六步。如果最后一步失败,光看日志可能看不出是页面卡住了还是按钮没反应。但如果每步都自动截了图,一眼就能发现是支付按钮被遮挡了,还是跳转页面没加载出来。
常见工具怎么开启截图
拿 Selenium 这个常用的测试框架来说,可以在代码里加几行就能实现截图。比如用 Python 写测试脚本时:
driver.get("https://example.com")
driver.save_screenshot("step1_homepage.png")
这样打开首页后就会自动存一张图。你可以在每个操作后都加一句 save_screenshot,命名按步骤来,比如 login_done.png、checkout_page.png,方便后续查看。
如果你用的是 Cypress,配置更简单。它默认就在每次失败时自动截图,你只需要在配置文件里指定保存路径:
<code>{
"screenshotsFolder": "./cypress/screenshots",
"video": true
}</code>
结合定时任务更省心
有些公司每天早上跑一轮核心功能测试,搭配截图功能,测试完直接把异常截图打包发给开发。开发一上班就能看到昨天夜里哪个页面出了问题,不用再自己搭环境去试。
本地调试也可以用。比如你写了个批量导入数据的脚本,担心界面弹窗漏掉提示,就可以让脚本每执行一步截一次图,全部完成后统一查看。
注意别把隐私信息拍进去
自动截图虽然方便,但也得小心。比如测试登录功能时,如果界面上显示了测试账号的密码,或者客户的真实姓名电话,这些图万一传到公共服务器上就有风险。建议在截图前加个处理步骤,把敏感区域打码,或者干脆在测试环境用假数据代替。
另外,截图太多也会占硬盘。可以设置只保留最近三天的,老的自动清理。Windows 上可以用批处理脚本配合任务计划器定期删:
forfiles /p "C:\screenshots" /s /m *.png /d -3 /c "cmd /c del @path"
这样一来既保留了排查依据,又不会把电脑C盘塞满。