e2e-send-image-verified-20260623.md
2.69 KB
端到端验证:发送图片给火星人 (2026-06-23)
测试目标
验证完整 ReAct 流程:触发 Intent → OCR 查找联系人 → 点击发送 → 验证成功。
环境
- 设备: Pixel (rooted)
- 屏幕: 1344×2992
- WeChat: 已登录
- 目标联系人: 火星人 (wxid: yibooo)
执行记录
Step 1: 触发 Intent
am start -a android.intent.action.SEND -t image/png \
--eu android.intent.extra.STREAM file:///sdcard/WeChatDigest/infographic_v3.png
结果: Intent 启动成功,WeChat 打开"选择聊天"界面
Step 2: 截图 + OCR 查找联系人
screenshot("/sdcard/Pictures/VisualAgent/share_v3_step1.png")
ocr_find_text(text="火星人", path="/sdcard/Pictures/VisualAgent/share_v3_step1.png")
结果: 找到 2 个匹配
- 匹配 1: (145, 923) — 最近转发列表中的"火星人"
- 匹配 2: (324, 1352) — 可能的其他位置
Step 3: 点击联系人
tap(145, 923)
结果: 点击成功,界面切换到发送预览界面
Step 4: 截图 + OCR 查找发送按钮
screenshot("/sdcard/Pictures/VisualAgent/share_v3_step2.png")
ocr_find_text(text="发送", path="/sdcard/Pictures/VisualAgent/share_v3_step2.png")
结果: 找到 2 个匹配
- "发送给:" (164, 1508) — 标签,不可点击
- "发送" (899, 2627) — 真正的发送按钮
Step 5: 点击发送按钮
tap(899, 2627)
结果: 点击成功
Step 6: 验证发送成功
screenshot("/sdcard/Pictures/VisualAgent/share_v3_step3_verify.png")
ocr_find_text(text="火星人", path="/sdcard/Pictures/VisualAgent/share_v3_step3_verify.png")
结果: 找到 1 个匹配
- "火星人" (663, 233) — 聊天标题,确认在火星人聊天界面
额外验证: 图片上显示 "To:火星人" 文字标记,确认图片已发送
关键发现
- 联系人位置不固定: 火星人在最近列表中的位置每次可能不同,必须用 OCR 查找,不能硬编码
- 发送按钮坐标固定: (899, 2627) 在 1344×2992 屏幕上确实固定
- "发送给:" 只是标签: 不可点击,真正的发送按钮是单独的"发送"文字
- 验证标志: 发送成功后聊天标题显示联系人名称,图片上有 "To:联系人" 标记
失败重试策略
如果 OCR 找不到联系人:
- 使用拼音搜索:
input_text("huoxingren") - 等待候选词出现
- 选择正确候选词
- 如果仍失败,先发送一条文字消息建立最近联系
截图保存路径
所有中间截图保存在 /sdcard/Pictures/VisualAgent/ 目录:
share_v3_step1.png— 选择聊天界面share_v3_step2.png— 发送预览界面share_v3_step3_verify.png— 发送成功验证