You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程自动删除Appium测试场景的旧截图文件夹?

嘿,这个问题我太熟悉了——做自动化测试时截图堆得快爆了是真头疼!分享几个我常用的自动清理旧截图的方法,亲测好用:

方法1:写个自定义清理脚本(最灵活)

这是我用得最多的方案,完全可以根据自己的需求定制规则:

Python跨平台脚本(推荐)

不管Windows还是Linux/Mac都能用,逻辑清晰好修改。比如下面这个脚本会删除7天前的截图,你也可以改成保留最新的N张:

import os
import time

def clean_old_screenshots(folder_path, days_old=7):
    # 计算过期时间(当前时间减去7天的秒数)
    cutoff_time = time.time() - (days_old * 86400)
    
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        # 只处理文件(跳过文件夹)
        if os.path.isfile(file_path):
            # Windows用创建时间,Linux/Mac用修改时间
            file_time = os.path.getctime(file_path) if os.name == 'nt' else os.path.getmtime(file_path)
            if file_time < cutoff_time:
                os.remove(file_path)
                print(f"已删除旧截图:{filename}")

if __name__ == "__main__":
    # 替换成你的截图文件夹路径
    screenshot_folder = "/path/to/your/screenshots"
    clean_old_screenshots(screenshot_folder, days_old=7)

Windows批处理脚本

如果习惯用CMD,也可以写个简单的批处理:

@echo off
set "screenshot_folder=C:\path\to\screenshots"
set "days_old=7"

forfiles /p "%screenshot_folder%" /s /m *.png /d -%days_old% /c "cmd /c del @path"
echo 已删除%days_old%天前的截图
pause

Linux/Mac Shell脚本

配合cron定时跑的话,Shell脚本更方便:

#!/bin/bash
screenshot_folder="/path/to/your/screenshots"
days_old=7

find "$screenshot_folder" -type f -name "*.png" -mtime +$days_old -delete
echo "已删除$days_old天前的截图"
方法2:集成到测试框架中

把清理逻辑和测试流程绑定,比如每次跑测试前自动清理旧截图,或者测试结束后只保留失败用例的截图:

以pytest为例(Python测试框架)

用session级别的fixture,在测试开始前清理所有旧截图:

import pytest
import os
import shutil

@pytest.fixture(scope="session", autouse=True)
def clean_screenshots_before_test():
    screenshot_folder = "/path/to/your/screenshots"
    # 清空文件夹里的所有文件
    for filename in os.listdir(screenshot_folder):
        file_path = os.path.join(screenshot_folder, filename)
        try:
            if os.path.isfile(file_path):
                os.unlink(file_path)
            elif os.path.isdir(file_path):
                shutil.rmtree(file_path)
        except Exception as e:
            print(f"清理截图时出错:{e}")

如果想保留失败用例的截图,可以在测试结束后把成功用例的截图删掉,或者把失败的移到单独的归档文件夹。

方法3:用系统定时任务自动执行

把上面的脚本设成定时任务,比如每天凌晨自动清理,完全不用手动管:

  • Windows:打开「任务计划程序」,创建基本任务,选择脚本路径,设置触发时间(比如每天凌晨2点)。
  • Mac:用「自动操作」创建定时工作流,或者用launchd配置plist文件。
  • Linux:编辑crontab(crontab -e),添加一行类似0 2 * * * /path/to/your/clean_script.sh,意思是每天凌晨2点执行脚本。
几个实用小提示
  • 别盲目删除:如果需要保留失败用例的截图,可以在脚本里加判断——比如截图文件名包含"failed"就跳过删除,或者把它们移到归档文件夹。
  • 测试前清理:如果只需要当前测试的截图,最简单的方式就是每次跑测试前清空整个截图文件夹,这样体积永远不会累积。
  • 按数量/大小限制:比如脚本里统计文件夹里的截图数量,超过100张就删除最旧的;或者当文件夹大小超过1GB时自动清理。

内容的提问来源于stack exchange,提问作者iLion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:59:26