docs: 元素选择器研究——「点不到按钮」的根因是序号型选择器(附实测证据与解法)

用户反馈任务步骤老是点不到元素,怀疑"执行用的 u2"和"抓取用的 uiautodev"两条
通道不一致。建 research 分支实测,结论与假设相反:

1) **两条通道其实是一致的**:同设备同屏各 dump 一次,节点数 330/330、
   id 个数逐项相同 —— 都是同一份 UiAutomation 树,不存在"看到的不一样"。
   顺带纠正一处过时注释:uiautodev 的 `rect` 就是像素(`bounds` 才是归一化)。

2) **真凶是序号型选择器**:复现「抖音→我页面」,底部 `0qf` 只有 **3 个**
   (首页/消息/我 —— 「朋友」tab 是灰度功能,有的账号/设备没有),
   而任务里写死 `(…0qf…)[4]` → 第 4 个不存在 → 必然点空。
   同一选择器在 4 tab 设备上碰巧对、在 3 tab 设备上必错 —— 这就是"时好时坏"。

3) **解法(实测有效)**:同一 id 多实例时用**文字/描述限定**:
   `//*[@resource-id="…0qf" and @text="我"]` → 命中并把设备带进我页面(jy- 出现)。

文档里还列了同类限定条件的优先级与四条待排期改动(抓取器优先产语义选择器、
对带序号的选择器加提示、存量任务批量复核、运行期 dump 同 id 实例数)。
This commit is contained in:
2026-09-13 20:56:37 +08:00
parent 6fd9e6f8f3
commit a94f63f0bf
2 changed files with 99 additions and 0 deletions
+1
View File
@@ -24,6 +24,7 @@
| [STF_REMOVAL.md](STF_REMOVAL.md) | **历史记录**:摘除 OpenSTF 的迁移过程(阶段 0-3) | 追溯背景时参考 |
| [staffdeck/KNOWLEDGE_BASE.md](staffdeck/KNOWLEDGE_BASE.md) | 给 StaffDeck 数字员工的知识库(MCP 接入/工具/约定/红线) | 外部 AI 接入方 |
| [staffdeck/JOB_SPEC.md](staffdeck/JOB_SPEC.md) | 数字员工岗位说明(岗位描述/看板摘要/执行约束) | 外部 AI 接入方 |
| [research/U2_ELEMENT_SELECTORS.md](research/U2_ELEMENT_SELECTORS.md) | **元素选择器研究**:「点不到按钮」的根因(序号型选择器随界面变形而错位)与语义选择器解法 | 写任务/抓元素的开发 |
| [backlog/TODO.md](backlog/TODO.md) | 已确认但暂缓的待办(含已知问题) | 所有开发者 |
项目根目录的 [README.md](../README.md) 是**项目总览与快速上手**(面向第一次接触项目的人),细节都在本目录。