Skip to content

v0.2.0 — 三个从第一天起就不可用的功能

Choose a tag to compare

@zeshuochen zeshuochen released this 06 Aug 00:15
· 47 commits to master since this release

⚠️ 升级后必须重载扩展

这一版改了 background.jsuv tool upgrade nekoro-browser 只更新 Python 那一侧——Chrome 里已加载的扩展会继续跑旧代码,涉及扩展的改动静默停留在旧行为(不报错,只是新功能不生效)。

uv tool upgrade nekoro-browser
nekoro-browser --reload-ext     # 或在 chrome://extensions 点「重新加载」
nekoro-browser --doctor         # 确认 service worker 有响应

manifest.json 的版本号已同步,可以和 nekoro-browser --version 对照着看。

三个从第一个 commit 起就不可用的功能

都被 try/except 转成了正常返回值,所以一直没人发现:

功能 症状
capture_screenshot() helpers 传 format=/quality=Daemon.screenshot 的签名是 f=/q= → TypeError → 吞成 ok:false
iframe_target() Target.getTargets 是 browser-level 命令,chrome.debugger 的 tab attach 下恒返回 Not allowed → 读起来像「没这个 iframe」。改走 Page.getFrameTree 返回 frameId
click_text() 会选中 display:none 的元素(rect 0×0)→ 点在 (0,0) 什么也没点到,却返回 ok:true。改用 find_text 那套带可见性过滤的引擎

其余七个修复

  • nth:N;text:/index: 静默失效 —— 点第 1 个却让调用方以为点了第 2 个。现在直接报 permanent
  • 歧义判定不看可见性 —— 移动端+桌面端各一份导航(一个 display:none)被误判成歧义,逼调用方去数 nth
  • 视口外元素点空报成功 —— rect 是视口坐标,元素在视口外照着点等于点空。新旧两条路径都补了 scrollIntoViewIfNeeded
  • refs() 3×N 次串行往返 + RemoteObject 泄漏 —— 改并发 + 一条 Runtime.evaluate,同页实测 355ms → 116ms(3.1×),且不再产生 objectId
  • 异常分支缺 kind —— 最需要「该不该重试」信号的分支反而没有
  • 类型检查口径 —— strict 实测 2211 error,改挂 standard 并加 CI 门禁,让标准与现实一致
  • site_noteshelpers 循环导入、判空 x==0 误判等

新增

ensure_tab(url) 复用优先的导航,不用记 reuse=True
refs() / click_ref(ref) backendNodeId 稳定句柄,DOM 小变化后仍命中同一元素
wait_for_download() 等下载完成 → {url, filename, bytes}
click(loc, tab=id) 跨标签点击;指名却没 attach 会报错而不是悄悄打到活动标签

已知限制(新增两条说明)

  • 下载目录改不了。 Browser.setDownloadBehavior-32601)与已废弃的 Page.setDownloadBehavior-32000 Cannot not access browser-level commands)都是 browser-level 命令,chrome.debugger 的 tab attach 下一律被拒。请在 Chrome 自己的设置里改。
  • 16 个 helper 收 tab=id,其余 37 个恒跟随活动标签;仍不做并行会话。

完整对比: v0.1.2...v0.2.0