Apple 当前的截图说明允许每组素材上传 1 到 10 张,格式为 JPEG 或 PNG,且不能包含透明通道;提交前仍要核对对应设备的截图规格。这意味着 fastlane snapshot 多语言截图自动化适合负责重复生成,不负责替你验收素材,更不等于已经上传或通过审核。
症状:语言、模拟器或测试数据每次变化,截图就可能错位、缺页或混入加载状态。
最快解法:先固定语言与地区、模拟器目标和测试数据,用稳定的 UI 测试驱动 fastlane snapshot;生成后检查每张图片,再单独核对商店规格并上传。
单人维护多语言 iOS App、想减少版本更新后的重复截图工作,可以从小范围配置开始。
负责出海本地化的开发者,需要确保不同语言的画面可重复生成并复核。
维护远程 Mac 自动化环境的小团队,则要让测试结果、日志和输出图片在任务结束后仍能检查。
SECTION 01按职责确定截图流程
单人开发者:先让测试稳定到达目标页面。 如果测试依赖网络返回、首次启动弹窗或不固定的账户内容,同一测试在不同运行中就可能停在不同界面。先把登录状态、测试数据、权限弹窗和页面等待逻辑固定,再加入截图调用;不要一开始就堆设备和语言,否则出错时很难辨认是测试路径还是本地化配置的问题。
fastlane 的流程通过 UI 测试驱动应用,并在测试中调用截图辅助方法;它也说明了运行测试与生成、归档截图并非同一件事。按照官方截图工作流,先准备 UI Test target 和 scheme,再初始化 snapshot 辅助文件,在测试的页面操作之间安排截图点。不要只在 Xcode 中点运行测试后,就认定 fastlane 输出目录已经齐全。
多语言团队:分别固定语言与地区。 语言决定界面文案,地区还可能改变日期、数字、货币等格式。若只切换语言、不固定地区,截图看似翻译正确,日期或金额却可能与预期市场不符。Apple 的本地化截图说明建议在 test plan 中为本地化设置语言和地区,并启用 Localization Screenshots;另一条路径是在 scheme 的 Test 选项中选择语言、地区并收集截图。
运行时确认应用确实进入目标本地化界面,而不是只看输出文件名。Apple 说明可在 scheme 里设置 Application Language 和 Application Region,并提醒切换模拟设备的系统语言与地区会影响整个系统,不仅是你的应用;参见本地化运行测试步骤。你还应检查长文案是否截断、按钮是否换行、日期与货币是否符合该地区,而不是把“目录里有该语言名称”当作通过。
多设备维护者:设备矩阵只覆盖真实差异。 设备越多,测试运行、故障定位和验收成本越高;但只测一种设备,也可能漏掉布局变化。先根据应用支持的平台、关键界面差异和商店素材需求挑选模拟器,再确认输出图是否符合对应商店尺寸。模拟器截图覆盖的是模拟设备的显示结果,不是实体设备功能验收;Apple 也指出模拟器并不完全复制实体设备的性能或功能,参见模拟设备与实体设备运行说明。
SECTION 02生成方式与适用边界
| 方案 | 适合解决的问题 | 主要优点 | 需要留意 |
|---|---|---|---|
| fastlane snapshot 配合 UI 测试 | 重复生成多语言、多设备截图 | 可把进入页面和截图步骤放在可重复的自动化流程里 | 测试不稳定时,生成结果也会缺失或内容错误 |
| Xcode 本地化截图 | 为本地化工作收集界面上下文 | 可通过 test plan 配置语言、地区并收集本地化截图 | 这不自动替代商店素材检查与上传 |
| 手工在 iOS 模拟器截图 | 少量页面临时核对 | 适合快速查看单一界面 | 每次更新需重新操作,语言与状态一致性依赖人工 |
两种自动化入口的目标不完全相同:Xcode 的本地化截图功能可为本地化工作提供界面上下文;fastlane snapshot 则能按其配置驱动 UI 测试并组织输出。Apple 的test plan 配置文档还列出语言、地区、自动屏幕捕获和本地化截图等配置项。根据你要交付的是翻译上下文还是商店图片,选择工具链,不要把两类截图混为一份验收结果。
如何配置 fastlane snapshot,让不同语言的截图进入对应界面? 在 Snapfile 中列出项目要测的语言与地区,并确保 UI 测试运行时启动应用、进入目标页面、触发截图。fastlane 文档给出的配置方式包括设置 languages、scheme 与输出目录;语言标识应与你的应用本地化及测试设置相匹配。先用少量语言验证测试能否进入正确界面,再逐步加入其余目标。
SECTION 03从首次运行到可交付素材
第一步:列出本次任务的验收对象。 把语言、地区、模拟器目标、截图页面和测试数据分别记录下来。每项对应一个明确结果,例如某种语言的首页、某个设备上的购买流程,而不是只写“多语言截图已完成”。
第二步:准备可重复启动的 UI 测试。 在测试开始时明确应用启动状态,处理首次提示、登录和权限弹窗;让测试能通过稳定的控件标识找到元素,避免依赖容易变化的屏幕坐标。页面内容尚未加载完成时,不要只靠固定延迟碰运气,应判断关键内容是否出现,再继续截图。
第三步:配置语言与设备的小矩阵。 在 fastlane 配置中列出目标语言和模拟器,并指定测试用 scheme。先跑一个代表性语言和设备,确认完整路径;这一步通过后,再加入确实影响界面布局或商店交付的目标。fastlane snapshot 支持按配置组织多语言与设备截图,但可用模拟器目标取决于运行环境中实际安装的运行时和设备定义,不能仅凭配置文件里的名称认定它们已就绪。
第四步:固定应用状态与截图命名。 每个截图点应有能说明页面用途的名称,并按用户操作顺序组织。测试数据也要确定性:避免随机头像、实时推荐内容、当前日期或网络接口结果直接改变画面。若这些内容本身必须展示,使用可控制的测试输入;否则同一张图每次变化,就很难判断代码改动是否真的造成视觉回归。
第五步:检查输出目录与测试证据。输出目录通常在哪里,怎样确认各语言和设备的截图没有缺漏? 默认情况下,fastlane 文档说明截图保存在 fastlane/screenshots;配置了 output_directory 后,应以实际指定的目录为准。查看目录是否覆盖预期语言和设备,核对文件数与测试步骤,并打开图片确认内容;同时保存测试报告和任务日志。截图缺失可能代表测试未走到截图点,也可能是该设备或语言运行失败,不能只看命令最终是否结束。可查看fastlane snapshot 参数说明确认当前项目的输出配置。
第六步:把失败分成三类处理。 测试未完成时,先查启动、定位控件、等待条件和模拟器状态;测试完成但缺图时,查截图调用是否执行、输出路径是否一致;图片存在但不合格时,查语言、页面状态、裁切和规格。失败时保留日志、测试报告和已有截图,不要让后续成功设备的结果掩盖前面的失败。
SECTION 04稳定性与远程执行检查
维护 UI 测试稳定性:检查动画、网络和动态内容。 动画、异步请求、滚动位置和系统弹窗都会改变截图时机。尽可能关闭非必要动画,等待可验证的界面状态,并为每次运行提供相同的测试数据。fastlane 提供的重试选项不能修复不确定的测试路径;如果一次成功、下一次失败,先定位不稳定源,再考虑重跑。
远程 Mac 团队:把运行条件写进任务记录。 远程 Mac 能运行 UI 测试,不代表需要的 Xcode 工具链、模拟器运行时和目标设备都已经安装,也不代表图形会话、磁盘空间或任务会话中断后仍能顺利恢复。将项目版本、Xcode 版本、测试 scheme、模拟器目标、Snapfile、输出路径和运行日志作为同一任务的记录;任务结束后确认文件可读取,并把产物复制到团队能访问的位置。对于需要浏览器操作模拟器的情形,可先阅读远程 Mac 上访问 iOS 模拟器的连接方式,再判断当前执行流程是否需要图形会话。
远程 Mac 执行 fastlane snapshot 前,要先满足哪些 UI 测试条件? 至少确认测试能在目标 Mac 上构建并启动,项目选定的模拟器运行时已经可用,UI 测试所需数据与权限可控,语言和地区设置正确,并且输出目录与日志在会话结束后仍能取回。远程任务第一次执行时先跑小矩阵,检查失败报告和图片;通过后再扩大范围。若你正在比较远程运行成本与自有设备的维护投入,可把套餐费用与使用方式纳入评估,而不是假设远程环境会自动解决测试稳定性。
SECTION 05商店交付前的独立验收
多种模拟器目标能否覆盖不同截图尺寸? 可以配置不同的模拟器目标来生成对应画面,但“覆盖多个模拟器”与“满足商店尺寸要求”是两种检查。生成后按设备、方向和本地化逐张检查,再对照 Apple 当前的截图规格表核验像素尺寸、格式及透明通道要求;不要仅凭模拟器型号或文件名判断合规。
随后单独确认 App Store Connect 中对应平台、语言和设备尺寸的素材位置。Apple 的截图上传说明把选择版本、语言和设备素材区作为上传流程的一部分;其截图 API 文档也将截图集、上传操作和处理状态作为单独资源描述。生成成功只证明自动化产出了一批文件,不证明素材尺寸符合要求、文件已成功上传,更不代表审核通过。
如果你的当前方式是手工逐张截取、每次临时改语言和设备,它的优势是启动简单,但重复劳动多、测试状态容易漂移,也难保留完整失败证据;如果把截图生成和上传绑成一个无人检查的任务,错误素材又可能直接覆盖线上商店内容。更稳妥的做法是让自动化负责重复生成,把图片质检、规格核对和上传保留为有记录的独立关卡。
当截图矩阵需要在无人值守环境反复运行,而你又不想专门购买和维护一台常驻 Mac 时,可以评估租用真实 Mac 是否适合这项任务;若你需要长期高负载运行或依赖实体设备接口,则应先比较自购设备和其他测试方案。若临时需要 macOS 环境来验证 Xcode UI 测试与截图流水线,可在核对项目工具链和模拟器需求后,进一步了解 MACNOX 的远程 Mac 方案。