
appium python 在 ios 上调用 start_recording_screen() 录制测试过程时,视频常出现明显加速(如32秒实测仅生成13秒视频),根本原因是默认帧率(10 fps)过低导致时间压缩;通过显式设置 videofps 参数为更高值(如30或60),可使视频时长与真实执行时间严格对齐。
appium python 在 ios 上调用 start_recording_screen() 录制测试过程时,视频常出现明显加速(如32秒实测仅生成13秒视频),根本原因是默认帧率(10 fps)过低导致时间压缩;通过显式设置 videofps 参数为更高值(如30或60),可使视频时长与真实执行时间严格对齐。
在 Appium 的 iOS 屏幕录制功能中,start_recording_screen() 方法默认以 10 FPS 进行采样——这意味着每秒仅捕获 10 帧画面。而 iOS 设备原生屏幕刷新率通常为 60Hz,且 UI 动画、转场、加载 spinner 等视觉反馈高度依赖高帧率渲染。当录制帧率远低于实际渲染帧率时,Appium 会跳过大量中间帧,最终生成的视频虽能反映操作序列,但严重压缩了时间维度,造成“快进”观感(例如旋转动画转速翻倍、页面过渡一闪而过)。
✅ 正确做法是:主动指定符合设备特性和调试需求的帧率。推荐优先尝试 30 或 60 FPS:
# 启动录制时显式设置 videoFps
driver.start_recording_screen(videoFps="30") # 或 "60"
# 执行测试步骤...
# ...
# 停止录制并保存
video_data = driver.stop_recording_screen()
save_video(video_data, "test_run_01")
def save_video(video_base64, filename):
import base64
log_folder = "logs" # 替换为你的日志目录路径
video_path = f"{log_folder}/{filename}.mp4"
with open(video_path, "wb") as f:
f.write(base64.b64decode(video_base64))⚠️ 注意事项:
- videoFps 参数值必须为字符串类型(如 "30"),传入整数会导致 Appium 报错 InvalidArgumentError;
- iOS 平台支持的 FPS 范围通常为 1–60,但过高帧率(如 60)可能轻微增加 CPU 开销和视频体积,建议在稳定性验证后按需选择:日常调试推荐 "30",需精细分析动画行为时选用 "60";
- 该参数仅对 iOS 生效(Android 使用 timeLimit 和 bitRate 等不同机制);
- 录制前请确保设备未启用「降低帧率」辅助功能(Settings → Accessibility → Motion → Reduce Motion),否则可能干扰录制效果。
? 总结:视频加速并非 Bug,而是默认低帧率策略下的预期行为。通过一行参数配置即可实现时间保真录制——这不仅提升缺陷复现可信度,也为自动化测试的可视化回溯提供了可靠依据。务必在初始化录制时显式声明 videoFps,避免依赖默认值。
立即学习“Python免费学习笔记(深入)”;










