ADB 设备农场自动化实践:批量安装、启动、采集与结果归档 📅 2026/6/30 23:45:04 用 Python 管理 ADB 设备农场:从硬编码脚本到可回归的移动端测试执行器摘要:一组能启动、停止应用的 ADB 命令,很容易在设备增多后失控:序列号写死、离线设备没有过滤、失败后继续执行、产物找不到、循环中断没有清理。本文把这类脚本重构成一个小型执行器,适用于冒烟、稳定性、性能采样前置和批量回归。标签:ADB、Android、Python、自动化测试、测试开发一、先说结论:不要把设备序列号写进代码硬编码序列号的脚本在一台电脑上很方便,但它会带来四个问题:换电脑或换线后,脚本马上失效。设备处于 unauthorized 或 offline 状态时仍会被调度。序列号属于环境信息,不适合提交到仓库或公开文章。无法在 CI、设备农场或多人环境中复用。更稳妥的方式是实时读取设备列表,并用标签或环境变量筛选目标设备。应用包名、启动 Activity、测试轮数和等待时间同样应放在配置中。二、最小架构:发现、执行、采集、清理一个可靠的 ADB 执行器至少有四层:配置层 包名、启动入口、轮数、超时、测试标签 设备层 发现设备、过滤状态、串行/并行调度 动作层 安装、启动、停止、拉取文件、执行测试 工件层 日志、返回码、设备信息、测试结果和清理记录把“ADB 命令字符串”散落在循环里,后期很难加入超时、重试、错误分类和结果归档。先把命令统一封装,脚本的可维护性会好很多。三、一个安全的基础封装下面的示例不包含真实包名和设备信息。它只展示如何检查命令结果、设置超时并留下错误上下文。from__future__importannotationsimportsubprocessfromdataclassesimportdataclass@dataclassclassCmdResult:argv:list[str]stdout:strstderr:strdefrun_adb(args:list[str],timeout:int=30)-CmdResult:proc=subprocess.run(["adb"