☰
Automa低代码网页自动化:Chrome扩展实现无代码流程编排
2026/10/11 1:11:08 网站建设 项目流程

简介: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 实测):

  1. 打开 Chrome,地址栏输入chrome://extensions/
  2. 右上角开启「开发者模式」
  3. 点击「加载已解压的扩展程序」
  4. 选择解压后的automa文件夹(不是 zip 包,也不是其父目录)
  5. 页面顶部出现绿色提示「已加载开发中的扩展程序」,Automa 图标出现在地址栏右侧

此时扩展已激活,但尚未定义任何行为——就像买回一台新电脑,系统装好了,桌面还是空的。

2.2 创建首个流程:三步完成「打开百度 → 输入关键词 → 截图首页」

这是验证环境是否正常的黄金路径,覆盖了页面跳转、元素查找、交互触发三大基础能力。注意:所有操作都在 Automa 弹窗内完成,不写代码、不切标签页、不离开当前窗口。

  1. 点击地址栏右侧 Automa 图标,打开弹窗

  2. 点击右上角「+ New workflow」→ 命名为test-baidu-search

  3. 在空白画布中,依次拖入三个模块:

    • Navigate to URL(导航模块)→ 配置 URL 为https://www.baidu.com
    • Type into field(输入模块)→ Selector 填#kw(百度搜索框 ID),Text 填Automa 自动化实战
    • Take screenshot(截图模块)→ Filename 填baidu-home-{timestamp},Format 选png
  4. 点击右上角「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)全局等待上限10000(10秒,足够应对慢网)
重试次数同上 →Retry count失败后自动重试3(避免偶发渲染延迟误判)
选择器类型Selector 输入框前下拉菜单切换解析引擎CSS selector(默认)、XPath、text、regex

实战技巧:

  • 遇到「按钮 ID 动态生成」(如btn-submit-abc123),放弃 ID,改用text=提交订单或css=[data-testid="submit-button"]
  • 遇到「表格行数不确定」,用css=table tr:nth-child(2) td:nth-child(3)定位第二行第三列,而非硬编码#row2-col3
  • 需要匹配「包含某文本的任意元素」,用text=订单号:.*\d{8}(正则模式,需勾选Use regex)

3.2 条件分支:用If/Else模块实现「有弹窗就点掉,没弹窗就继续」

真实网页充满不确定性:登录后可能弹活动广告、提交后可能跳成功页或报错页、列表末尾可能显示「没有更多数据」。v1.28.27 的If/Else模块支持基于元素存在性、文本内容、URL 正则的三类判断,且分支内可嵌套任意模块。

典型场景:处理「确认弹窗」

  1. 在可能触发弹窗的操作后(如点击「删除」按钮),添加If模块
  2. Condition 选Element exists,Selector 填.modal-confirm .btn-primary(确认弹窗的「确定」按钮)
  3. Then 分支:添加Click element,Selector 同上
  4. Else 分支:留空(表示无弹窗,流程自然向下)

注意:If模块本身不等待,它只做快照判断。因此必须确保前一步操作已稳定(比如Click element后加Wait for navigation或Wait for element disappear),否则可能因 DOM 未更新而误判。

3.3 循环与变量:用For each+Extract text抓取动态列表数据

这是 Automa 最被低估的能力——它能把「人眼扫表格 → 复制每行数据 → 粘贴到 Excel」变成全自动。关键在于Extract text模块输出的是数组,可直接喂给For each。

示例:抓取某教务系统「课程列表」的课程名、教师、学分三列

  1. Navigate to URL→ 目标课程页
  2. Extract text→ Selector 填table#course-list tbody tr,Output as 选Array of objects
  3. 在Extract text配置中,点击「Add field」三次,分别定义:
    • course_name:td:nth-child(1) a(第一列链接文本)
    • teacher:td:nth-child(2)(第二列纯文本)
    • credit:td:nth-child(4) span.score(第四列带 class 的分数)
  4. 将Extract text输出连接到For each模块
  5. For each内部放Log message,Message 填课程:{{item.course_name}},教师:{{item.teacher}},学分:{{item.credit}}

运行后,控制台(Automa 弹窗底部 Log 标签)会逐行打印结果。若要导出 CSV,可在For each外接Write to file模块,Content 填{{item.course_name}},{{item.teacher}},{{item.credit}}\n,Filename 填courses.csv,Mode 选Append。


4. 避坑指南:v1.28.27 的 4 个血泪经验与排查路径

Automa 表面简单,但一旦流程变长、页面变复杂,就会暴露底层 Chromium 扩展机制的限制。以下是我在某图像处理 Demo 项目中踩过的真坑,每条都附可验证的复现方式和根治方案。

4.1 现象:流程运行到一半突然中断,Log 显示Error: Cannot access contents of url "about:blank"

原因:Chrome 扩展默认禁止访问about:blank和某些沙盒页。当目标网站使用iframe src="about:blank"初始化富文本编辑器(如 CKEditor),Automa 注入脚本会因权限不足被拦截,导致后续所有模块失效。
解决:在manifest.json中的"content_scripts"数组里,为matches添加"about:blank"(需重新加载扩展)。但更安全的做法是——在流程中Navigate to URL后,加一个Wait for element,Selector 填iframe#editor,Timeout 设为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 启动无头模式(--headless=new)时完全不工作

原因:Automa 依赖 Chrome 的 UI 进程(如弹窗、下载管理器、扩展后台页),而--headless=new模式禁用全部 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 elements,Automa 会自动模糊input[type="password"]、div[id*="idcard"]等选择器匹配的区域
  • 我们把截图目录设为 Git 仓库子目录,每次流程更新后git add screenshots/ && git commit -m "add error snapshots for v1.28.27",形成可视化的故障知识库

5.3 流程即文档:用 JSON 导出实现「零成本交接」

Automa 流程文件本质是结构化 JSON,v1.28.27 的 schema 更规范,字段命名直白(如action、target、condition),无需额外文档。我们要求所有流程必须:

  1. 在workflows/下按业务域建子目录(/enroll/,/grade/,/schedule/)
  2. 每个 JSON 文件头部加注释块(JSON 不原生支持,但 Automa 兼容):
{ "//": "【课程注册流程】用于每学期初批量导入学生选课数据,依赖教务系统 v3.2.1", "//": "作者:A同学,最后更新:2024-06-10,关联 Jira:EDU-1234", "name": "enroll-batch-import", "nodes": [ ... ] }
  1. 用 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,点运行,看着日志里刷出✅ 导航完成,就知道今晚能睡个好觉。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询