2026年05月29日 赛博日记

生成时间:2026-05-29 23:58

📝 今日概要

攻克Chrome 127+ Cookie解密难题,实现TAPD用例与Electron应用的双向同步,完成了从底层加密处理到前端UI集成的全链路打通。

🔍 核心技术进展

Chrome Cookie自动刷新(核心突破)

来源: refresh_cookies.py + SQLite+DPAPI方案

  • 技术选型: 放弃browser-use的BrowserSession方案,改用直接读取Chrome SQLite Cookie数据库 + DPAPI解密
  • 硬核Bug解决: Chrome 127+采用App-Bound Encryption,解密后有32字节固定前缀(hex: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),必须跳过才能获取真实Cookie值
  • 解密流程: Local State获取AES Key → DPAPI解密 → AES-256-GCM解密 → 跳过32字节头 → 过滤TAPD域名
  • 配置复用: 复用web_automation项目的defaults.py + config_loader配置系统,Profile路径自动同步

TAPD双向同步集成

来源: tapd_browser迁移 + Electron IPC集成

  • 项目迁移: tapd_browser从独立项目迁移到ysbaiautotest主项目
  • IPC通道设计: testcase:tapd-get(↓获取)和testcase:tapd-put(↑推送),遵循domain:action命名规范
  • 字段映射: 完成用例名称、步骤、优先级、类型、前置条件等8个核心字段的双向映射
  • 标签与责任人同步: Labels提取DisplayName存入本地tags(string[]),推送时还原为TAPD格式;Owners数组取首元素→本地creator字符串
  • 元信息保护: 推送时使用merge_from_server=True,先GET服务端数据再合并,避免丢失TAPD侧的Color、Name等元信息

Electron路径解析修复

来源: testcase.service.ts路径问题排查

  • 根本原因: __dirname在Electron编译后指向输出目录而非源码目录,../../../../tapd_browser/路径解析失败
  • 解决方案: 复用resolveElectronPyPath()模式,通过app.getAppPath()定位项目根目录
  • 架构模式: IPC Handlers → Service Layer → Python子进程调用,统一返回{success, data, error}结构

前端UI集成

来源: TestCaseLibraryView.vue + SettingsView.vue

  • 卡片按钮: 每个用例卡片新增↓(蓝色,获取TAPD)和↑(橙色,推送到TAPD)两个图标按钮
  • 设置页面: 新增TAPD用例同步配置区域(tapdNamespace、tapdRepoUid、tapdVersionUid)
  • 数据绑定: 使用v-model + handleInput模式,与现有设置项保持一致

💡 深度洞察与经验教训

  • 洞察: Chrome的加密机制在持续演进,旧版的DPAPI-only方案在127+后不再适用,需要处理App-Bound Encryption的额外头部。这种变化要求Cookie读取方案保持向后兼容性。
  • 教训: Electron编译后的环境变化比预期复杂,__dirname这类Node.js基础API在打包后会失去语义,必须使用app.getAppPath()等Electron特定API。
  • 教训: browser-use的BrowserProfile默认会复制Profile到临时目录,这会导致持久化数据(如Cookie)丢失,理解框架的默认行为至关重要。
  • 洞察: 本地数据结构与远程系统(如TAPD)的字段映射是双向同步的核心难点,类型转换(数组vs字符串)和元信息保护需要精心设计merge策略。
  • 教训: 推送数据时直接替换字段会丢失服务端的元信息(如Color、Name),应该采用diff合并模式,保留未变更的原始数据。

🚀 未来行动设想

  • 将TAPD同步模式扩展到其他测试管理工具(如Jira、TestRail)
  • 实现Cookie刷新定时任务,确保认证状态持续有效
  • 增加TAPD同步的错误重试机制和用户友好的错误提示
  • 研究Chrome加密机制的演进趋势,提前适配未来版本的Cookie存储格式
  • 完善字段映射的diff算法,支持更精细的冲突解决策略

📊 自动化统计

  • 捕获 Memory 数:2(2026-05-29.md、claude_2026-05-29.md)
  • 笔记更新数:0(note-gen-sync目录下今日无新增笔记)