简介Automa 是一款面向前端开发者、测试工程师及自动化需求用户的免费开源 Chrome 浏览器插件通过可视化拖拽模块实现 Web UI 自动化无需编写代码即可完成表单自动填写、网页数据抓取、批量截图、重复任务执行等高频操作显著降低浏览器自动化门槛。资源包为 v1.28.27 官方发布版共含 69 个文件涵盖 44 个核心 JS 模块如 popup.bundle.js、contentScript.bundle.js、background.bundle.js 等、6 个 CSS 样式文件含主题与组件样式、5 个 HTML 入口页popup.html、newtab.html、params.html 等以及多语言 JSON 本地化资源、SVG 图标、字体文件woff2/woff和 manifest.json 配置清单完整复现插件运行所需全部静态资产总大小仅 2.1MB轻量易部署。已有 2617 人学习下载。用户可直接解压后加载为已解压扩展使用获得开箱即用的自动化能力并基于源码结构快速理解其沙箱机制、工作流编排逻辑与多语言支持方案。1. Automa 是什么一个不写代码也能搭自动化流水线的 Chrome 扩展专治网页重复操作、表单批量填、数据抓取黑匣子Automa-chrome-v1.28.27.zip 不是某个神秘组织发布的加密包而是当前2024年中Automa 浏览器扩展的稳定发行版压缩包——它把原本需要写 Puppeteer 脚本、调试 Playwright selector、反复重试 XPath 的网页自动化任务压缩成「拖拽配置点击运行」的三步闭环。我第一次用它在某高校教务系统里自动导出37个班级的课表 PDF全程没碰一行 JavaScript后来在某跨平台系统做 UI 回归验证时靠它把 12 个关键路径的点击流封装成可复用的「流程块」测试同学改完前端样式后5 分钟内跑完全部用例。它不是替代 Selenium 的重型方案而是给业务侧、产品侧、测试初学者和不想维护脚本的工程师准备的「低代码自动化中间件」不依赖服务器、不穿透网络策略、不修改目标页面源码所有逻辑跑在本地 Chrome 渲染进程里。如果你常遇到「这个按钮每次 xpath 都变」「那个下拉框要等 2 秒才加载选项」「导出 Excel 总卡在下载弹窗」这类玄学问题Automa 就是那个你翻车 3 次后终于想通「早该换工具」的后悔药。2. 从解压到首跑用 v1.28.27 在本地 Chrome 跑通第一个自动化流程Automa 的核心价值不在安装而在「开箱即用的确定性」——v1.28.27 这个版本经过大量真实场景锤炼对 Chrome 120–126 版本兼容性极稳且修复了早期版本中「iframe 内元素定位失败率高」「下载文件名含中文乱码」两个高频痛点。下面步骤严格按生产环境实操顺序展开跳过所有「可能」和「建议」只留必须动作。2.1 解压与加载绕过 Chrome 商店的离线部署法Automa 官方已停止在 Chrome 网上应用店更新v1.28.27 是目前最后一个公开分发的完整功能版。直接解压automa-chrome-v1.28.27.zip后你会得到一个automa文件夹内部结构清晰automa/ ├── manifest.json # 扩展元信息声明权限与入口 ├── popup.html # 右上角弹窗界面 ├── content.js # 注入网页的 DOM 操作核心 ├── background.js # 后台服务管理流程调度与下载 ├── workflows/ # 用户保存的流程文件初始为空 └── icons/ # 图标资源提示不要手动修改manifest.json中的version字段。v1.28.27 的后台服务与前端 UI 有强版本耦合改版本号会导致流程无法保存或触发报错Error: workflow not found in storage。加载步骤Chrome 124 实测打开 Chrome地址栏输入chrome://extensions/右上角开启「开发者模式」点击「加载已解压的扩展程序」选择解压后的automa文件夹不是 zip 包也不是其父目录页面顶部出现绿色提示「已加载开发中的扩展程序」Automa 图标出现在地址栏右侧此时扩展已激活但尚未定义任何行为——就像买回一台新电脑系统装好了桌面还是空的。2.2 创建首个流程三步完成「打开百度 → 输入关键词 → 截图首页」这是验证环境是否正常的黄金路径覆盖了页面跳转、元素查找、交互触发三大基础能力。注意所有操作都在 Automa 弹窗内完成不写代码、不切标签页、不离开当前窗口。点击地址栏右侧 Automa 图标打开弹窗点击右上角「 New workflow」→ 命名为test-baidu-search在空白画布中依次拖入三个模块Navigate to URL导航模块→ 配置 URL 为https://www.baidu.comType into field输入模块→ Selector 填#kw百度搜索框 IDText 填Automa 自动化实战Take screenshot截图模块→ Filename 填baidu-home-{timestamp}Format 选png点击右上角「Run」按钮绿色三角Automa 会自动新建一个标签页加载百度首页等待 DOM 就绪后向#kw输入文字再模拟回车或点击「百度一下」按钮取决于你是否添加了Click element模块。最后截取整个页面并保存到默认下载目录通常是~/Downloads。参数说明{timestamp}是 Automa 内置变量格式为YYYYMMDD-HHMMSS避免文件名冲突Selector支持 CSS 选择器、XPath需加前缀xpath、以及 Automa 自研的text语法如text百度一下可直接定位按钮文本。这个流程的.json文件会自动保存在automa/workflows/test-baidu-search.json内容可读性强后续可 Git 管理或跨机器迁移。3. 核心模块深度用法Selector 定位、条件分支、循环与变量传递Automa 的能力边界取决于你能否精准表达「我要操作哪个元素」「在什么条件下执行」「重复多少次」。v1.28.27 对这三类逻辑做了显著增强尤其在动态页面适配上比 v1.25 之前版本更鲁棒。3.1 Selector 定位不止于 CSS更要会用「容错型」写法很多新手卡在第一步明明document.querySelector(#submit-btn)在控制台能取到Automa 却报Element not found。根本原因在于 Automa 的注入时机与页面加载节奏不同步。v1.28.27 提供了四层容错机制必须组合使用容错层级配置位置作用推荐值等待策略每个模块右上角 ⚙️ →Wait for element等待目标元素出现在 DOM 中Visible推荐或Present超时时间同上 →Timeout (ms)全局等待上限1000010秒足够应对慢网重试次数同上 →Retry count失败后自动重试3避免偶发渲染延迟误判选择器类型Selector 输入框前下拉菜单切换解析引擎CSS selector默认、XPath、text、regex实战技巧遇到「按钮 ID 动态生成」如btn-submit-abc123放弃 ID改用text提交订单或css[data-testidsubmit-button]遇到「表格行数不确定」用csstable tr:nth-child(2) td:nth-child(3)定位第二行第三列而非硬编码#row2-col3需要匹配「包含某文本的任意元素」用text订单号.*\d{8}正则模式需勾选Use regex3.2 条件分支用If/Else模块实现「有弹窗就点掉没弹窗就继续」真实网页充满不确定性登录后可能弹活动广告、提交后可能跳成功页或报错页、列表末尾可能显示「没有更多数据」。v1.28.27 的If/Else模块支持基于元素存在性、文本内容、URL 正则的三类判断且分支内可嵌套任意模块。典型场景处理「确认弹窗」在可能触发弹窗的操作后如点击「删除」按钮添加If模块Condition 选Element existsSelector 填.modal-confirm .btn-primary确认弹窗的「确定」按钮Then 分支添加Click elementSelector 同上Else 分支留空表示无弹窗流程自然向下注意If模块本身不等待它只做快照判断。因此必须确保前一步操作已稳定比如Click element后加Wait for navigation或Wait for element disappear否则可能因 DOM 未更新而误判。3.3 循环与变量用For eachExtract text抓取动态列表数据这是 Automa 最被低估的能力——它能把「人眼扫表格 → 复制每行数据 → 粘贴到 Excel」变成全自动。关键在于Extract text模块输出的是数组可直接喂给For each。示例抓取某教务系统「课程列表」的课程名、教师、学分三列Navigate to URL→ 目标课程页Extract text→ Selector 填table#course-list tbody trOutput as 选Array of objects在Extract text配置中点击「Add field」三次分别定义course_name:td:nth-child(1) a第一列链接文本teacher:td:nth-child(2)第二列纯文本credit:td:nth-child(4) span.score第四列带 class 的分数将Extract text输出连接到For each模块For each内部放Log messageMessage 填课程{{item.course_name}}教师{{item.teacher}}学分{{item.credit}}运行后控制台Automa 弹窗底部 Log 标签会逐行打印结果。若要导出 CSV可在For each外接Write to file模块Content 填{{item.course_name}},{{item.teacher}},{{item.credit}}\nFilename 填courses.csvMode 选Append。4. 避坑指南v1.28.27 的 4 个血泪经验与排查路径Automa 表面简单但一旦流程变长、页面变复杂就会暴露底层 Chromium 扩展机制的限制。以下是我在某图像处理 Demo 项目中踩过的真坑每条都附可验证的复现方式和根治方案。4.1 现象流程运行到一半突然中断Log 显示Error: Cannot access contents of url about:blank原因Chrome 扩展默认禁止访问about:blank和某些沙盒页。当目标网站使用iframe srcabout:blank初始化富文本编辑器如 CKEditorAutoma 注入脚本会因权限不足被拦截导致后续所有模块失效。解决在manifest.json中的content_scripts数组里为matches添加about:blank需重新加载扩展。但更安全的做法是——在流程中Navigate to URL后加一个Wait for elementSelector 填iframe#editorTimeout 设为15000强制等待 iframe 加载完成后再操作其内部元素。4.2 现象Extract text抓到的数据全是空字符串或undefined原因目标元素是 Vue/React 渲染的动态内容DOM 插入后还需 JS 执行才能填充文本。Automa 的Extract text默认只读textContent对innerText或value属性无效。解决在Extract text配置中勾选Use innerText对可见文本更准或Use value对 input/select 有效若仍不行改用Execute JavaScript模块代码写return document.querySelector(input#price).value;更底层可控。4.3 现象Download file模块始终不触发下载或下载文件大小为 0原因Chrome 对扩展下载有严格策略——仅当用户主动触发如点击a download时才允许静默下载。v1.28.27 的Download file本质是模拟点击若目标链接是 JS 生成的 Blob URL如blob:https://xxx/abc123则无法直接下载。解决改用Execute JavaScript模块执行以下代码需替换YOUR_BLOB_URL// 获取 Blob URL 对应的二进制数据并触发下载 fetch(YOUR_BLOB_URL) .then(r r.blob()) .then(blob { const url URL.createObjectURL(blob); const a document.createElement(a); a.href url; a.download report.pdf; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); });4.4 现象流程在本地 Chrome 运行正常但用 Chrome CLI 启动无头模式--headlessnew时完全不工作原因Automa 依赖 Chrome 的 UI 进程如弹窗、下载管理器、扩展后台页而--headlessnew模式禁用全部 UI 组件导致background.js无法调度任务。这不是 Bug是设计限制。解决无头模式下 Automa 无法使用。如需服务端调度请改用 Puppeteer Automa 导出的 JSON 流程逻辑Automa 支持导出为 JSON Schema用代码解析后调用 Puppeteer API 实现同等效果——这正是我们团队在某跨平台系统中采用的混合架构。5. 进阶技巧用 Automa 做「可验证的 UI 自动化」与长期维护策略Automa 的终极价值不是省下几行代码而是让自动化行为变得可观测、可验证、可交接。v1.28.27 新增的Log message增强、Screenshot on error和Export workflow as JSON三大特性正是为此而生。下面分享我在某高校实验室落地的一套轻量级 UI 自动化验证方案。5.1 用Log message构建「执行链路追踪」替代肉眼盯屏很多人把 Automa 当作黑匣子流程跑完只看最终结果。但真实业务中「哪一步慢」「哪一次失败」「数据从哪来」比「有没有成功」更重要。v1.28.27 的Log message支持模板变量和多级日志我习惯这样配置模块位置Log message 内容作用Navigate to URL后✅ 导航完成{{url}}耗时 {{duration}}ms记录页面加载性能Extract text后 抓取到 {{length}} 条记录首条{{first.course_name}}验证数据完整性Click element后️ 已点击「{{selector}}」当前 URL{{currentUrl}}锁定状态跳转是否符合预期所有日志实时输出在 Automa 弹窗底部 Log 标签支持复制、清空、按关键词过滤如输❌只看错误。更重要的是这些日志会随流程导出为 JSON可接入 ELK 做集中分析——某次发现duration超过 5s 的请求占比突增 40%顺藤摸瓜定位到教务系统后端接口响应退化这远超自动化本身的价值。5.2Screenshot on error给每一次失败配上「现场快照」光有日志不够UI 自动化的失败往往源于视觉层异常按钮被遮挡、弹窗未关闭、字体加载失败导致布局偏移。v1.28.27 在每个模块设置中新增Screenshot on error开关启用后只要该模块执行失败Automa 会自动截取当前页面全屏图文件名含时间戳和错误摘要如error-click-20240615-142203-btn-disabled.png。落地要点截图默认存~/Downloads/automa-screenshots/建议在 Chrome 设置中将下载目录固定避免分散对敏感页面如含学号、身份证字段在Screenshot on error配置中勾选Blur sensitive elementsAutoma 会自动模糊input[typepassword]、div[id*idcard]等选择器匹配的区域我们把截图目录设为 Git 仓库子目录每次流程更新后git add screenshots/ git commit -m add error snapshots for v1.28.27形成可视化的故障知识库5.3 流程即文档用 JSON 导出实现「零成本交接」Automa 流程文件本质是结构化 JSONv1.28.27 的 schema 更规范字段命名直白如action、target、condition无需额外文档。我们要求所有流程必须在workflows/下按业务域建子目录/enroll/,/grade/,/schedule/每个 JSON 文件头部加注释块JSON 不原生支持但 Automa 兼容{ //: 【课程注册流程】用于每学期初批量导入学生选课数据依赖教务系统 v3.2.1, //: 作者A同学最后更新2024-06-10关联 JiraEDU-1234, name: enroll-batch-import, nodes: [ ... ] }用 VS Code 安装「Automa Workflow Viewer」插件可将 JSON 渲染为可视化流程图新同事打开文件即懂全貌。这套做法让我们在某图像处理 Demo 项目中把 17 个核心流程的平均交接时间从 3 小时压缩到 22 分钟——新人不再问「这个xpath是怎么来的」而是直接看Extract text的字段定义和Log message的上下文。最后说句实在话Automa 不是银弹它解决不了需要深度 DOM 操控、复杂 Canvas 绘图识别或跨域 iframe 通信的场景。但它把 80% 的网页重复劳动变成了可阅读、可调试、可沉淀的资产。我坚持用 v1.28.27不是因为它最新而是它最稳——在某个深夜三点当教务系统又双叒叕改了按钮 class我打开 Automa改一行 selector点运行看着日志里刷出✅ 导航完成就知道今晚能睡个好觉。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?