feat(抓取): 元素检查器改成本地版"大图 + 一次取齐"——复刻云检查器的体验
用户要的是 uiauto.dev 那个检查器的体验(左边大图点元素、右边层级树、选完回填),
并希望本地复刻(云页面跨域,拿不到它的选中结果,没法自动回传)。
- core/uiauto_helper.py: 新增 `snapshot(serial)`
* **一个 u2 连接背靠背** dump_hierarchy() + screenshot():截图与元素树同源同刻,
不再像原来那样分两个接口取(中间隔着 dump 本身的 1.3~1.8 秒)
* `_xml_to_node()`:把 u2 的 XML 节点转成 uiautodev 那套结构,直接复用既有的
选择器建议逻辑(不写第二遍)
* **双截图校验**:dump 前后各截一张,差异明显就标 `unstable`,让前端明确提示
"界面在变化中,请停在静止界面再抓",而不是悄悄给一个可能错位的框
- web/tasks_api.py: 新增 `GET /api/uiauto/snapshot`(登录 + 设备权限)
- static/admin/editor.js + templates/admin/monitor.html:
* 抓取弹窗从 900px 加宽到 1280px,预览列从"固定 320px"改为铺满左侧 →
**图片按原始分辨率 1:1 显示**(实测 720x1650 缩放 1.000),元素框严丝合缝;
原来缩到 294px 时框全挤在一起,看着就像错位
* 工具栏显示 `720x1650 · 247 个元素 · 2370ms`;界面在变时顶部弹黄色提示条
* 鼠标在图上移动时高亮"最深命中"的元素框,便于确认真要点哪个
实测:抓取弹窗 1:1 显示、222 个框逐一贴合元素、无 JS 报错;
`unstable` 在静止界面为 false。
This commit is contained in:
@@ -109,12 +109,14 @@
|
||||
界面**只要在动**(抖音信息流、视频、加载动画…),两秒足够让元素位置全变 →
|
||||
**框永远落在旧位置上** —— 这就是"老是错位",不是偶发。
|
||||
|
||||
### 解法
|
||||
### 解法(✅ 2026-09-13 已实现,见 `core/uiauto_helper.snapshot`)
|
||||
|
||||
1. **一次请求取齐**(推荐,也是用户说的"用原始 u2"):
|
||||
新增 `GET /api/uiauto/snapshot?serial=X`,服务端用**一个 u2 连接**背靠背
|
||||
`dump_hierarchy()` + `screenshot()`,返回 `{image, elements}`;
|
||||
前端只调这一个接口 → 天然同源,间隔从 ~2.2s 降到 ~1.4s。
|
||||
**并且抓取弹窗改成大图 1:1 预览**(原来预览列只有 320px、图片被缩到 294px,
|
||||
框全挤在一起,看着就像"错位";现在铺满左侧、按原始分辨率显示)。
|
||||
2. **双截图校验**(关键:让失败可见而不是悄悄错位):
|
||||
抓取时前后各截一张,两张**不一致就明确提示**"界面在抓取过程中变化了,
|
||||
请让设备停在目标界面再抓",而不是给一个已经错位的框。
|
||||
|
||||
Reference in New Issue
Block a user