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:火星人" 文字标记,确认图片已发送

关键发现

  1. 联系人位置不固定: 火星人在最近列表中的位置每次可能不同,必须用 OCR 查找,不能硬编码
  2. 发送按钮坐标固定: (899, 2627) 在 1344×2992 屏幕上确实固定
  3. "发送给:" 只是标签: 不可点击,真正的发送按钮是单独的"发送"文字
  4. 验证标志: 发送成功后聊天标题显示联系人名称,图片上有 "To:联系人" 标记

失败重试策略

如果 OCR 找不到联系人:

  1. 使用拼音搜索: input_text("huoxingren")
  2. 等待候选词出现
  3. 选择正确候选词
  4. 如果仍失败,先发送一条文字消息建立最近联系

截图保存路径

所有中间截图保存在 /sdcard/Pictures/VisualAgent/ 目录:

  • share_v3_step1.png — 选择聊天界面
  • share_v3_step2.png — 发送预览界面
  • share_v3_step3_verify.png — 发送成功验证