通常不是数据被删除,而是旧版本把数据保存到了启动命令所在目录。新版 npx android-midscene-automation 会默认使用固定的系统用户数据目录,并在启动时尝试从当前目录自动迁移旧数据。
默认数据目录:
Windows: %LOCALAPPDATA%\android-midscene-automation
macOS: ~/Library/Application Support/android-midscene-automation
Linux: ~/.local/share/android-midscene-automation
如果迁移后仍看不到旧数据,请在之前启动过的目录里查找 .midscene-app/script-cache.sqlite,再把 .midscene-app 复制到上面的固定数据目录。也可以设置 ANDROID_MIDSCENE_DATA_ROOT 指向原来的数据目录继续使用。
如果账号框和密码框都是 id/tg_edit,只按 id 回放可能输入到第一个输入框。
建议:
- 直接分别选择账号框和密码框录制输入。
- 在节点详情里确认 selector 是否显示“重复 N”,以及“推荐定位”是否显示父级 + 子级。
- 如果推荐定位不准确,展开录制步骤,手动修改父级上下文 selector。
- 坐标点击只作为最后兜底。
可能原因:
- 按钮当前禁用。
- 账号密码不正确。
- App 使用单 Activity,Activity 不变化。
- 页面跳转依赖网络。
推荐:
- 使用“等待出现”判断下个页面核心元素,或添加“等待 Activity”明确目标页面。
- 检测到 Activity 变化时可以选择继续在当前脚本录制;也可以拆成两个脚本,再用“连接脚本”串联。
- 单 Activity App 不要依赖 Activity 变化,应使用页面核心元素判断是否已进入目标状态。
- 连接脚本列表会显示同一 App 的其他已保存脚本,不受入口 Activity 限制。
- 连接操作本身不会点击页面或主动跳转,前面的点击、输入或启动 App 必须先让设备进入目标脚本需要的页面。
- 目标脚本绑定了入口 Activity 时,回放会等待该 Activity;未绑定时会直接从当前画面执行。
- 跨页面连接前建议添加“等待 Activity”或“等待出现”,便于确认页面已经切换完成。
部分厂商系统会限制桌面或启动器页面的控件信息,Appium 可能无法获取桌面图标的稳定 id。此时在桌面录制“点击 App 图标”可能无法回放。
建议在开始节点后添加“启动 App”操作,由系统按包名打开目标 App,替代桌面点击图标。需要重置登录态或缓存时,可以先添加“清理 App 缓存”,再添加“启动 App”。
使用“判断存在”。
判断存在 确认按钮
是 -> 点击 确认按钮
否 -> 不添加操作
不要直接把弹窗确认按钮作为普通必选点击,否则弹窗不出现时脚本会失败。
适合多 Activity App。
如果 App 是单 Activity 架构,优先用:
等待出现 页面核心元素
可选步骤适合非主流程阻塞项:
- 权限弹窗
- 协议弹窗
- 活动弹窗
- 首次引导
不建议把登录按钮、提交按钮、核心断言设置为可选。
组件树刷新和 Appium 回放不能同时占用 UiAutomation。当前版本会在回放期间暂停组件树自动刷新,并在断开时清理残留抓取进程后重试一次。
如果仍然失败:
- 确认手机保持解锁,USB 调试授权没有失效。
- 确认 Appium 和 UiAutomator2 Driver 已正常启动。
- 停止其他正在抓取同一设备组件树的工具。
- 重新连接设备后再次回放。
- 先确认设备仍显示在设备下拉框中。
- 点击设备预览刷新按钮重新获取画面。
- 点击“刷新组件树”重新抓取页面结构。
- 回放期间组件树自动刷新会暂停,回放完成后会自动恢复。