butubb
|
4ea777a55a
|
fix(抓取): 元素框跟着图片走(ResizeObserver)+ 界面放大 + 右侧层级/属性/颜色三页签
用户报的准确现象:**点某些元素会让画面变大,但框没跟着变大 → 错位**。
根因:预览图是 `max-width:100%` —— 窗口够宽时恒为原始尺寸(我这儿复现不出),
但窗口窄时图片被压小;此时任何**布局微动**都会改变预览列宽度 → 图片重新缩放,
而框是上一次算好的**像素坐标**,不会跟着变。触发布局微动的正是"点元素":
`.el-picker-item.active` 用 `border-left:3px`(占宽度)→ 列表变宽 → 预览变窄 →
图片变小 ✗。实测(视口压到 900):图片从 720 → 363,框仍停在 720 的位置。
修法:
1. **ResizeObserver 盯着图片**:显示尺寸一变就重算所有框 —— 窗口缩放、面板宽度
变化、滚动条出现…都会自动跟上,这是"完全不错位"的兜底保证。
2. 高亮一律改用 **outline / box-shadow**(不占布局)→ 选中元素不再引发任何重排。
3. 弹窗放大到 **98vw × 88vh**(用户要"整个界面大一点"),图片在宽窗口下 1:1。
4. 右侧改成和 uiauto.dev 一样的**三页签**:
- **层级**:元素树(原列表,缩进 + 搜索)
- **属性**:选中元素的全部属性(建议选择器/class/resource-id/text/desc/package/
clickable/bounds/深度)
- **颜色**:鼠标在图上移动实时取**像素色**;选中元素显示**元素中心色**
5. 交互对齐云检查器:**点层级条目 = 选中**(看属性/颜色/高亮,不关窗),
回填改由每行的「✓ 填入」按钮触发。
实测(视口 900 窄窗口):图片 720→363、框同步变 363 ✓;点元素不再错位 ✓;
三页签可用、属性/取色正确(选中元素中心 #f7f7f7)✓;无 JS 报错 ✓。
|
2026-09-13 21:30:41 +08:00 |
|
butubb
|
37a2b1c59b
|
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。
|
2026-09-13 21:17:12 +08:00 |
|
butubb
|
3f44cd1491
|
fix: 元素选择器序号语义 + 抓取弹窗直接点击测试
- uiauto_helper: 同属性多实例的选择器由 `//*[@id="x"][k]` 改为 `(//*[@id="x"])[k]`——
前者在 XPath 里是"父节点内排第 k",多实例时 [2..n] 全部失配(实测抖音底部 4 个同 id tab:
仅 [1] 可用),任务里表现为"未找到元素"但界面上元素明明存在。
- tasks/generic/task.py: 新增 _norm_legacy_xpath,执行前把**历史遗留**的
`//*[@attr=…][k]` 窄范围纠正为带括号形式(只改前缀,结构路径 …/FrameLayout[2] 的
兄弟序号保持不动)——已存任务无需重抓即可恢复。
- editor.js: 抓取弹窗每条元素新增「▶ 点一下」(按 bounds 中心真点一次,/api/screen/tap
snap=1 吸附)与「✓ 测选择器」(用将填入的选择器跑 /api/steps/test 验证命中),
点击后自动刷新截图;底部加用法提示。
- doc/TASK_DEV.md:写明 xpath 序号必须整体加括号 + 旧形态自动纠正 + 优先文字/唯一 id。
|
2026-09-10 15:31:33 +08:00 |
|
butubb
|
27530ff5ac
|
fix: 手动执行不再受运行窗口限制(窗口只约束定时触发)——立即执行按钮在窗口外也可触发任务
|
2026-08-20 08:36:29 +08:00 |
|
butubb
|
a0916ebda2
|
fix: 抓取元素回填垃圾选择器——无属性元素生成 //*[N](匹配任意节点点不到),改为 invalid 标记前端提示不可选;结构路径跳过无 class 层消除 //*[N] 前缀污染;模块拆分遗漏修复(get_all_worker_status/list_installed_apps 致 summary/设备已装应用 500)
|
2026-08-19 15:10:26 +08:00 |
|
butubb
|
a5ce57b6fd
|
阶段3: 摘除 STF——删除 stf_client/stf_device_mgmt 与全部引用(STF 容器重启/设备管理/强制释放占用/agent 按钮/占用列),调度与设备管理完全基于本地设备池+adb;错误类迁入 device_worker,create_worker 去 stf 参数
|
2026-08-18 08:08:32 +08:00 |
|
butubb
|
e48eeef49b
|
feat: 任务抢占+归还(抢占任务结束后自动重启被抢占任务)+ 修复抢占死锁(stop_device 移出锁块)+ wait 步骤可中断 + 循环块新增一直循环模式(配合定时启动+停止实现全天候养号)
|
2026-08-16 08:12:05 +08:00 |
|
butubb
|
a51857d143
|
feat: 步骤新增剪贴板注入(可注入+粘贴,批量发链接场景)+ adb终端快捷命令 tcpip 5555 转网络调试
|
2026-08-15 15:53:31 +08:00 |
|
butubb
|
21d3aa8268
|
feat: 任务离线设备自动跳过(serial/分组模式触发时过滤 STF 池离线设备,默认开启,任务编辑器可勾选关闭)
|
2026-08-14 09:16:54 +08:00 |
|
butubb
|
060157ea1a
|
refactor: 前端JS拆分为8个模块(base/list/monitor/editor/tasks/tools/apps/admin,按依赖顺序加载)+ 删除废弃文件(start_web.bat/main.py/fix_web.bat/cleanup.py,web已全覆盖)+ 文档同步 + 修复/api/summary缺导入
|
2026-08-11 14:53:04 +08:00 |
|