# WebAutomator
**Repository Path**: coderyrepos/web-automator
## Basic Information
- **Project Name**: WebAutomator
- **Description**: 一个强大的浏览器插件与 Python 后端服务通信的框架,支持 **URL 规则自动化**和 **WebSocket 实时通信**。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-01
- **Last Updated**: 2026-05-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🤖 浏览器插件 + Python 后端通信框架 (v3.0)
一个强大的浏览器插件与 Python 后端服务通信的框架,支持 **URL 规则自动化**和 **WebSocket 实时通信**。
## 📋 核心特性
### v3.0 新功能 ✨
- ✅ **URL 规则自动化**: 为不同网站配置自动化操作流程
- ✅ **多种操作类型**: input、click、select、checkbox、keydown、wait、custom
- ✅ **可视化元素选择器**: 点选页面元素自动生成 CSS 选择器
- ✅ **规则管理界面**: Popup 中管理所有自动化规则
- ✅ **智能 URL 匹配**: 支持通配符模式(`*` 和 `?`)
### v2.0 功能(保留)✅
- ✅ **WebSocket 单向通信**: 浏览器插件只通过 WebSocket 接收后端消息
- ✅ **HTTP 接口**: 后端提供 HTTP 接口供外部服务发送消息到插件
- ✅ **自动插入功能**: 开启后,来自后端的消息自动插入到光标位置
- ✅ **后台运行**: Service Worker 支持后台持久化运行
- ✅ **状态持久化**: 开关状态保存在本地存储,重启不丢失
- ✅ **智能文本插入**: 支持 input、textarea、contenteditable 元素
- ✅ **自动重连**: WebSocket 断开后每 5 秒自动重连
- ✅ **悬浮按钮**: 右下角可视化开关控制
- ✅ **向后兼容**: v3.0 完全兼容 v2.0 的所有功能
## 📁 项目结构
```
browser_plugin/
├── backend/ # Python 后端服务
│ ├── main.py # FastAPI 主程序
│ └── requirements.txt # Python 依赖
├── extension/ # 浏览器插件
│ ├── manifest.json # 插件配置 (v3.0)
│ ├── background.js # Background Service Worker
│ ├── content.js # Content Script (注入页面)
│ ├── popup.html # Popup 界面 (v3.0)
│ ├── popup.css # Popup 样式 (v3.0)
│ ├── popup.js # Popup 逻辑 (v3.0)
│ ├── rules-storage.js # 规则存储管理 (新增)
│ ├── url-matcher.js # URL 匹配引擎 (新增)
│ ├── action-executor.js # 操作执行引擎 (新增)
│ └── element-picker.js # 元素选择器 (新增)
├── test_sender.html # 消息发送测试工具
├── http_send_test.py # HTTP 接口测试脚本
├── test_automation_v3.py # v3.0 自动化测试脚本 (新增)
├── start_backend.py # Python 启动脚本
├── start.bat # Windows 一键启动
├── USAGE_v3.0.md # v3.0 使用指南 (新增)
├── IMPLEMENTATION_v3.0.md # v3.0 实现报告 (新增)
├── ARCHITECTURE.md # 架构说明文档
└── README.md # 说明文档
```
## ✨ 功能特性
- ✅ **HTTP 通信**: GET/POST 请求,适合常规数据交互
- ✅ **WebSocket 实时通信**: 双向实时消息传递
- ✅ **自动插入开关**: 悬浮按钮控制是否将后端内容插入光标位置
- ✅ **智能文本插入**: 支持 input、textarea、contenteditable 元素
- ✅ **自动重连**: WebSocket 断开后自动重连
- ✅ **多标签页支持**: 同时管理多个浏览器标签页的连接
- ✅ **可视化界面**: Popup 弹窗提供状态监控和测试工具
- ✅ **日志系统**: 完整的通信日志记录
- ✅ **易于扩展**: 清晰的代码结构,方便添加新功能
## ✨ 架构说明
```
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ │ HTTP │ │ WS │ │
│ External │ ──────> │ Python │ ──────> │ Browser Plugin │
│ Services │ POST │ Backend │ Push │ (Content Script)│
│ │ │ (FastAPI) │ │ │
└─────────────┘ └──────────────┘ └────────┬────────┘
│
│ Auto Insert
▼
┌─────────────────┐
│ Cursor Position│
└─────────────────┘
```
**数据流:**
1. 外部服务通过 HTTP POST 发送消息到 `/api/send`
2. Python 后端接收消息并转发给所有连接的浏览器插件
3. 浏览器插件收到消息后,如果自动插入开启,则插入到光标位置
详细架构说明请查看:[ARCHITECTURE.md](ARCHITECTURE.md)
## 📁 项目结构
### 1. 启动 Python 后端
**Windows:**
```bash
# 双击运行
start.bat
# 或者命令行运行
python start_backend.py
```
**Mac/Linux:**
```bash
# 安装依赖
pip install -r backend/requirements.txt
# 启动服务
python start_backend.py
```
后端服务将在 `http://127.0.0.1:8000` 启动
### 2. 加载浏览器插件
1. 打开 Chrome/Edge 浏览器
2. 访问 `chrome://extensions/` (Chrome) 或 `edge://extensions/` (Edge)
3. 开启右上角的 **"开发者模式"**
4. 点击 **"加载已解压的扩展程序"**
5. 选择 `extension` 文件夹
6. 插件加载成功!
### 3. 测试通信
#### v2.0 测试(基础功能)
1. 点击浏览器工具栏的插件图标,打开 Popup 界面
2. 查看后端状态和 WebSocket 连接状态
3. 在消息输入框输入内容,点击发送
#### v3.0 测试(URL 规则自动化)✨
1. 打开任意网页(如 Google: https://www.google.com)
2. 点击插件图标,点击 “📄 当前页面” 按钮
3. 输入规则名称(例如 “Google 搜索”)
4. 规则已创建!现在发送消息将自动执行操作
5. 使用测试脚本:
```bash
python test_automation_v3.py
```
### 4. 使用自动插入功能
1. 打开任意网页(如记事本、邮件编辑器等)
2. 页面右下角会出现一个**圆形悬浮按钮**
- 🔵 **紫色(○)**: 自动插入关闭
- 🟢 **绿色(✓)**: 自动插入开启
3. **点击按钮**切换开关状态
4. 开启后,来自后端的内容会自动插入到当前光标位置
5. 支持以下元素:
- 输入框 (``)
- 文本域 (`