# RPA SDK
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://gitee.com/aitmc/rpa-sdk)
**RPA SDK** 是一个功能强大的机器人流程自动化(RPA)软件开发工具包,专为Python开发者设计。它提供了浏览器自动化、WebSocket通信、数据库操作等核心功能,帮助您快速构建高效的RPA应用程序。
## ✨ 主要特性
- 🌐 **浏览器自动化**: 基于Playwright的现代浏览器自动化支持
- 🔌 **WebSocket通信**: 实时双向通信能力
- 🗄️ **数据库集成**: 支持MySQL数据库操作
- 📊 **数据模型**: 内置访问、体检、档案等数据模型
- 🛠️ **丰富工具**: 提供字符串处理、文件操作、系统工具等实用功能
- 📝 **完整日志**: 支持调试模式和详细日志记录
- 🎯 **易于扩展**: 模块化设计,支持自定义任务处理器
## 📦 安装
### 使用pip安装
```bash
pip install rpa-sdk
```
### 从源码安装
```bash
git clone https://gitee.com/aitmc/rpa-sdk.git
cd rpa-sdk
pip install -e .
```
### 安装浏览器驱动
安装完成后,需要安装Playwright浏览器驱动:
```bash
playwright install
```
## 🚀 快速开始
### 基本使用
```python
from rpa_sdk import RPAClient, Logger
# 创建RPA客户端
client = RPAClient()
# 启用调试日志
Logger.setup(debug_mode=True)
# 初始化浏览器
if client.initialize_browser(headless=False):
Logger.info("浏览器初始化成功")
# 执行自动化任务
# ...
# 清理资源
client.cleanup()
```
### 使用浏览器管理器
```python
from rpa_sdk import PlaywrightBrowserManager
with PlaywrightBrowserManager() as browser:
if browser.initialize(headless=False):
browser.navigate_to("https://example.com")
# 执行页面操作
# ...
```
### WebSocket通信
```python
from rpa_sdk import WebSocketClient
def handle_message(data):
print(f"收到消息: {data}")
# 创建WebSocket客户端
ws_client = WebSocketClient(
url="ws://localhost:8765",
message_handler=handle_message
)
# 连接并发送消息
ws_client.connect()
ws_client.send_message("hello", "Hello, Server!")
```
### 数据库操作
```python
from rpa_sdk import DatabaseManager
# 获取数据库管理器
db = DatabaseManager()
# 执行查询
results = db.execute_query("SELECT * FROM users WHERE active = 1")
for row in results:
print(row)
```
## 📚 API文档
### 核心类
#### RPAClient
主要的RPA客户端类,提供完整的RPA功能。
- `initialize_browser(headless=True)`: 初始化浏览器
- `login_system(username, password)`: 系统登录
- `start()`: 启动客户端
- `stop()`: 停止客户端
- `cleanup()`: 清理资源
#### PlaywrightBrowserManager
浏览器管理器,负责浏览器实例的生命周期管理。
- `initialize(headless=True)`: 初始化浏览器
- `navigate_to(url)`: 导航到指定URL
- `login(username, password)`: 执行登录操作
- `cleanup()`: 清理浏览器资源
#### WebSocketClient
WebSocket客户端,提供实时通信功能。
- `connect()`: 连接到WebSocket服务器
- `send_message(action, message, data=None)`: 发送消息
- `send_result(key_id, rpa_type, rpa_state, rpa_note)`: 发送执行结果
- `stop()`: 停止连接
### 工具类
#### Logger
增强的日志记录器。
- `Logger.setup(debug_mode=False, log_file="rpa.log")`: 设置日志配置
- `Logger.info(message, extra_data=None)`: 记录信息日志
- `Logger.warning(message, extra_data=None)`: 记录警告日志
- `Logger.error(message, exception=None, extra_data=None)`: 记录错误日志
## 🔧 配置
### 环境变量
- `RPA_DEBUG`: 设置为`true`启用调试模式
- `RPA_LOG_FILE`: 指定日志文件路径
- `WEBSOCKET_URL`: WebSocket服务器地址
### 配置文件
您可以创建配置文件来自定义RPA客户端的行为:
```python
# config.py
CONFIG = {
'browser': {
'headless': True,
'timeout': 30000,
},
'websocket': {
'url': 'ws://localhost:8765',
'reconnect_interval': 5,
},
'database': {
'host': 'localhost',
'port': 3306,
'user': 'root',
'password': 'password',
'database': 'rpa_db',
}
}
```
## 🎯 使用场景
- **Web自动化测试**: 自动化网页操作和测试
- **数据采集**: 从网站批量采集数据
- **业务流程自动化**: 自动化重复性业务操作
- **系统集成**: 连接不同系统进行数据交换
- **监控和报告**: 自动生成报告和监控系统状态
## 🤝 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建Pull Request
## 📄 许可证
本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 📞 支持
- 📧 邮箱: support@aitmc.com
- 🐛 问题反馈: [Gitee Issues](https://gitee.com/aitmc/rpa-sdk/issues)
- 📖 文档: [项目Wiki](https://gitee.com/aitmc/rpa-sdk/wikis)
## 🔄 更新日志
### v1.0.0 (2024-01-15)
- 🎉 首次发布
- ✨ 支持Playwright浏览器自动化
- ✨ WebSocket实时通信
- ✨ MySQL数据库集成
- ✨ 完整的日志系统
- ✨ 模块化架构设计
---
**RPA SDK** - 让自动化更简单! 🚀
Raw data
{
"_id": null,
"home_page": null,
"name": "rpa-sdk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "rpa, automation, browser, websocket, database",
"author": null,
"author_email": "AITMC <support@aitmc.com>",
"download_url": "https://files.pythonhosted.org/packages/b2/4e/dd57bd7301c39d25a90f3e8a5c0b78cb7b436dc6f5a1c2683742707e00ba/rpa_sdk-1.1.2.tar.gz",
"platform": null,
"description": "# RPA SDK\r\n\r\n[](https://www.python.org/downloads/)\r\n[](LICENSE)\r\n[](https://gitee.com/aitmc/rpa-sdk)\r\n\r\n**RPA SDK** \u662f\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684\u673a\u5668\u4eba\u6d41\u7a0b\u81ea\u52a8\u5316\uff08RPA\uff09\u8f6f\u4ef6\u5f00\u53d1\u5de5\u5177\u5305\uff0c\u4e13\u4e3aPython\u5f00\u53d1\u8005\u8bbe\u8ba1\u3002\u5b83\u63d0\u4f9b\u4e86\u6d4f\u89c8\u5668\u81ea\u52a8\u5316\u3001WebSocket\u901a\u4fe1\u3001\u6570\u636e\u5e93\u64cd\u4f5c\u7b49\u6838\u5fc3\u529f\u80fd\uff0c\u5e2e\u52a9\u60a8\u5feb\u901f\u6784\u5efa\u9ad8\u6548\u7684RPA\u5e94\u7528\u7a0b\u5e8f\u3002\r\n\r\n## \u2728 \u4e3b\u8981\u7279\u6027\r\n\r\n- \ud83c\udf10 **\u6d4f\u89c8\u5668\u81ea\u52a8\u5316**: \u57fa\u4e8ePlaywright\u7684\u73b0\u4ee3\u6d4f\u89c8\u5668\u81ea\u52a8\u5316\u652f\u6301\r\n- \ud83d\udd0c **WebSocket\u901a\u4fe1**: \u5b9e\u65f6\u53cc\u5411\u901a\u4fe1\u80fd\u529b\r\n- \ud83d\uddc4\ufe0f **\u6570\u636e\u5e93\u96c6\u6210**: \u652f\u6301MySQL\u6570\u636e\u5e93\u64cd\u4f5c\r\n- \ud83d\udcca **\u6570\u636e\u6a21\u578b**: \u5185\u7f6e\u8bbf\u95ee\u3001\u4f53\u68c0\u3001\u6863\u6848\u7b49\u6570\u636e\u6a21\u578b\r\n- \ud83d\udee0\ufe0f **\u4e30\u5bcc\u5de5\u5177**: \u63d0\u4f9b\u5b57\u7b26\u4e32\u5904\u7406\u3001\u6587\u4ef6\u64cd\u4f5c\u3001\u7cfb\u7edf\u5de5\u5177\u7b49\u5b9e\u7528\u529f\u80fd\r\n- \ud83d\udcdd **\u5b8c\u6574\u65e5\u5fd7**: \u652f\u6301\u8c03\u8bd5\u6a21\u5f0f\u548c\u8be6\u7ec6\u65e5\u5fd7\u8bb0\u5f55\r\n- \ud83c\udfaf **\u6613\u4e8e\u6269\u5c55**: \u6a21\u5757\u5316\u8bbe\u8ba1\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u4efb\u52a1\u5904\u7406\u5668\r\n\r\n## \ud83d\udce6 \u5b89\u88c5\r\n\r\n### \u4f7f\u7528pip\u5b89\u88c5\r\n\r\n```bash\r\npip install rpa-sdk\r\n```\r\n\r\n### \u4ece\u6e90\u7801\u5b89\u88c5\r\n\r\n```bash\r\ngit clone https://gitee.com/aitmc/rpa-sdk.git\r\ncd rpa-sdk\r\npip install -e .\r\n```\r\n\r\n### \u5b89\u88c5\u6d4f\u89c8\u5668\u9a71\u52a8\r\n\r\n\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u9700\u8981\u5b89\u88c5Playwright\u6d4f\u89c8\u5668\u9a71\u52a8\uff1a\r\n\r\n```bash\r\nplaywright install\r\n```\r\n\r\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u57fa\u672c\u4f7f\u7528\r\n\r\n```python\r\nfrom rpa_sdk import RPAClient, Logger\r\n\r\n# \u521b\u5efaRPA\u5ba2\u6237\u7aef\r\nclient = RPAClient()\r\n\r\n# \u542f\u7528\u8c03\u8bd5\u65e5\u5fd7\r\nLogger.setup(debug_mode=True)\r\n\r\n# \u521d\u59cb\u5316\u6d4f\u89c8\u5668\r\nif client.initialize_browser(headless=False):\r\n Logger.info(\"\u6d4f\u89c8\u5668\u521d\u59cb\u5316\u6210\u529f\")\r\n \r\n # \u6267\u884c\u81ea\u52a8\u5316\u4efb\u52a1\r\n # ...\r\n \r\n # \u6e05\u7406\u8d44\u6e90\r\n client.cleanup()\r\n```\r\n\r\n### \u4f7f\u7528\u6d4f\u89c8\u5668\u7ba1\u7406\u5668\r\n\r\n```python\r\nfrom rpa_sdk import PlaywrightBrowserManager\r\n\r\nwith PlaywrightBrowserManager() as browser:\r\n if browser.initialize(headless=False):\r\n browser.navigate_to(\"https://example.com\")\r\n # \u6267\u884c\u9875\u9762\u64cd\u4f5c\r\n # ...\r\n```\r\n\r\n### WebSocket\u901a\u4fe1\r\n\r\n```python\r\nfrom rpa_sdk import WebSocketClient\r\n\r\ndef handle_message(data):\r\n print(f\"\u6536\u5230\u6d88\u606f: {data}\")\r\n\r\n# \u521b\u5efaWebSocket\u5ba2\u6237\u7aef\r\nws_client = WebSocketClient(\r\n url=\"ws://localhost:8765\",\r\n message_handler=handle_message\r\n)\r\n\r\n# \u8fde\u63a5\u5e76\u53d1\u9001\u6d88\u606f\r\nws_client.connect()\r\nws_client.send_message(\"hello\", \"Hello, Server!\")\r\n```\r\n\r\n### \u6570\u636e\u5e93\u64cd\u4f5c\r\n\r\n```python\r\nfrom rpa_sdk import DatabaseManager\r\n\r\n# \u83b7\u53d6\u6570\u636e\u5e93\u7ba1\u7406\u5668\r\ndb = DatabaseManager()\r\n\r\n# \u6267\u884c\u67e5\u8be2\r\nresults = db.execute_query(\"SELECT * FROM users WHERE active = 1\")\r\nfor row in results:\r\n print(row)\r\n```\r\n\r\n## \ud83d\udcda API\u6587\u6863\r\n\r\n### \u6838\u5fc3\u7c7b\r\n\r\n#### RPAClient\r\n\u4e3b\u8981\u7684RPA\u5ba2\u6237\u7aef\u7c7b\uff0c\u63d0\u4f9b\u5b8c\u6574\u7684RPA\u529f\u80fd\u3002\r\n\r\n- `initialize_browser(headless=True)`: \u521d\u59cb\u5316\u6d4f\u89c8\u5668\r\n- `login_system(username, password)`: \u7cfb\u7edf\u767b\u5f55\r\n- `start()`: \u542f\u52a8\u5ba2\u6237\u7aef\r\n- `stop()`: \u505c\u6b62\u5ba2\u6237\u7aef\r\n- `cleanup()`: \u6e05\u7406\u8d44\u6e90\r\n\r\n#### PlaywrightBrowserManager\r\n\u6d4f\u89c8\u5668\u7ba1\u7406\u5668\uff0c\u8d1f\u8d23\u6d4f\u89c8\u5668\u5b9e\u4f8b\u7684\u751f\u547d\u5468\u671f\u7ba1\u7406\u3002\r\n\r\n- `initialize(headless=True)`: \u521d\u59cb\u5316\u6d4f\u89c8\u5668\r\n- `navigate_to(url)`: \u5bfc\u822a\u5230\u6307\u5b9aURL\r\n- `login(username, password)`: \u6267\u884c\u767b\u5f55\u64cd\u4f5c\r\n- `cleanup()`: \u6e05\u7406\u6d4f\u89c8\u5668\u8d44\u6e90\r\n\r\n#### WebSocketClient\r\nWebSocket\u5ba2\u6237\u7aef\uff0c\u63d0\u4f9b\u5b9e\u65f6\u901a\u4fe1\u529f\u80fd\u3002\r\n\r\n- `connect()`: \u8fde\u63a5\u5230WebSocket\u670d\u52a1\u5668\r\n- `send_message(action, message, data=None)`: \u53d1\u9001\u6d88\u606f\r\n- `send_result(key_id, rpa_type, rpa_state, rpa_note)`: \u53d1\u9001\u6267\u884c\u7ed3\u679c\r\n- `stop()`: \u505c\u6b62\u8fde\u63a5\r\n\r\n### \u5de5\u5177\u7c7b\r\n\r\n#### Logger\r\n\u589e\u5f3a\u7684\u65e5\u5fd7\u8bb0\u5f55\u5668\u3002\r\n\r\n- `Logger.setup(debug_mode=False, log_file=\"rpa.log\")`: \u8bbe\u7f6e\u65e5\u5fd7\u914d\u7f6e\r\n- `Logger.info(message, extra_data=None)`: \u8bb0\u5f55\u4fe1\u606f\u65e5\u5fd7\r\n- `Logger.warning(message, extra_data=None)`: \u8bb0\u5f55\u8b66\u544a\u65e5\u5fd7\r\n- `Logger.error(message, exception=None, extra_data=None)`: \u8bb0\u5f55\u9519\u8bef\u65e5\u5fd7\r\n\r\n## \ud83d\udd27 \u914d\u7f6e\r\n\r\n### \u73af\u5883\u53d8\u91cf\r\n\r\n- `RPA_DEBUG`: \u8bbe\u7f6e\u4e3a`true`\u542f\u7528\u8c03\u8bd5\u6a21\u5f0f\r\n- `RPA_LOG_FILE`: \u6307\u5b9a\u65e5\u5fd7\u6587\u4ef6\u8def\u5f84\r\n- `WEBSOCKET_URL`: WebSocket\u670d\u52a1\u5668\u5730\u5740\r\n\r\n### \u914d\u7f6e\u6587\u4ef6\r\n\r\n\u60a8\u53ef\u4ee5\u521b\u5efa\u914d\u7f6e\u6587\u4ef6\u6765\u81ea\u5b9a\u4e49RPA\u5ba2\u6237\u7aef\u7684\u884c\u4e3a\uff1a\r\n\r\n```python\r\n# config.py\r\nCONFIG = {\r\n 'browser': {\r\n 'headless': True,\r\n 'timeout': 30000,\r\n },\r\n 'websocket': {\r\n 'url': 'ws://localhost:8765',\r\n 'reconnect_interval': 5,\r\n },\r\n 'database': {\r\n 'host': 'localhost',\r\n 'port': 3306,\r\n 'user': 'root',\r\n 'password': 'password',\r\n 'database': 'rpa_db',\r\n }\r\n}\r\n```\r\n\r\n## \ud83c\udfaf \u4f7f\u7528\u573a\u666f\r\n\r\n- **Web\u81ea\u52a8\u5316\u6d4b\u8bd5**: \u81ea\u52a8\u5316\u7f51\u9875\u64cd\u4f5c\u548c\u6d4b\u8bd5\r\n- **\u6570\u636e\u91c7\u96c6**: \u4ece\u7f51\u7ad9\u6279\u91cf\u91c7\u96c6\u6570\u636e\r\n- **\u4e1a\u52a1\u6d41\u7a0b\u81ea\u52a8\u5316**: \u81ea\u52a8\u5316\u91cd\u590d\u6027\u4e1a\u52a1\u64cd\u4f5c\r\n- **\u7cfb\u7edf\u96c6\u6210**: \u8fde\u63a5\u4e0d\u540c\u7cfb\u7edf\u8fdb\u884c\u6570\u636e\u4ea4\u6362\r\n- **\u76d1\u63a7\u548c\u62a5\u544a**: \u81ea\u52a8\u751f\u6210\u62a5\u544a\u548c\u76d1\u63a7\u7cfb\u7edf\u72b6\u6001\r\n\r\n## \ud83e\udd1d \u8d21\u732e\r\n\r\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\uff01\u8bf7\u9075\u5faa\u4ee5\u4e0b\u6b65\u9aa4\uff1a\r\n\r\n1. Fork \u672c\u4ed3\u5e93\r\n2. \u521b\u5efa\u7279\u6027\u5206\u652f (`git checkout -b feature/AmazingFeature`)\r\n3. \u63d0\u4ea4\u66f4\u6539 (`git commit -m 'Add some AmazingFeature'`)\r\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/AmazingFeature`)\r\n5. \u521b\u5efaPull Request\r\n\r\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\r\n\r\n\u672c\u9879\u76ee\u91c7\u7528MIT\u8bb8\u53ef\u8bc1 - \u67e5\u770b [LICENSE](LICENSE) \u6587\u4ef6\u4e86\u89e3\u8be6\u60c5\u3002\r\n\r\n## \ud83d\udcde \u652f\u6301\r\n\r\n- \ud83d\udce7 \u90ae\u7bb1: support@aitmc.com\r\n- \ud83d\udc1b \u95ee\u9898\u53cd\u9988: [Gitee Issues](https://gitee.com/aitmc/rpa-sdk/issues)\r\n- \ud83d\udcd6 \u6587\u6863: [\u9879\u76eeWiki](https://gitee.com/aitmc/rpa-sdk/wikis)\r\n\r\n## \ud83d\udd04 \u66f4\u65b0\u65e5\u5fd7\r\n\r\n### v1.0.0 (2024-01-15)\r\n- \ud83c\udf89 \u9996\u6b21\u53d1\u5e03\r\n- \u2728 \u652f\u6301Playwright\u6d4f\u89c8\u5668\u81ea\u52a8\u5316\r\n- \u2728 WebSocket\u5b9e\u65f6\u901a\u4fe1\r\n- \u2728 MySQL\u6570\u636e\u5e93\u96c6\u6210\r\n- \u2728 \u5b8c\u6574\u7684\u65e5\u5fd7\u7cfb\u7edf\r\n- \u2728 \u6a21\u5757\u5316\u67b6\u6784\u8bbe\u8ba1\r\n\r\n---\r\n\r\n**RPA SDK** - \u8ba9\u81ea\u52a8\u5316\u66f4\u7b80\u5355\uff01 \ud83d\ude80\r\n",
"bugtrack_url": null,
"license": null,
"summary": "RPA SDK - \u673a\u5668\u4eba\u6d41\u7a0b\u81ea\u52a8\u5316\u8f6f\u4ef6\u5f00\u53d1\u5de5\u5177\u5305",
"version": "1.1.2",
"project_urls": {
"Bug Reports": "https://gitee.com/aitmc/rpa-sdk/issues",
"Documentation": "https://gitee.com/aitmc/rpa-sdk/wikis",
"Homepage": "https://gitee.com/aitmc/rpa-sdk",
"Source": "https://gitee.com/aitmc/rpa-sdk"
},
"split_keywords": [
"rpa",
" automation",
" browser",
" websocket",
" database"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "06d9ccaa4a3c7fe4f7316e25f023ca0a42671deefb5362c3912f66118ef6f70a",
"md5": "3ae7cbc3673cc278bb74e782581a22c5",
"sha256": "afdaa3c8672d69ba1f79a7ed394daa127fa0ba437e2c3db540244ab691840c94"
},
"downloads": -1,
"filename": "rpa_sdk-1.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3ae7cbc3673cc278bb74e782581a22c5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 72154,
"upload_time": "2025-09-03T06:49:10",
"upload_time_iso_8601": "2025-09-03T06:49:10.301223Z",
"url": "https://files.pythonhosted.org/packages/06/d9/ccaa4a3c7fe4f7316e25f023ca0a42671deefb5362c3912f66118ef6f70a/rpa_sdk-1.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b24edd57bd7301c39d25a90f3e8a5c0b78cb7b436dc6f5a1c2683742707e00ba",
"md5": "ad2fb11de56f16857efcee5256bb93cf",
"sha256": "cd9f033ca7462fb193d431a14d8c8c619da9cd9090d48b8ce6eb2cbc417ba7c5"
},
"downloads": -1,
"filename": "rpa_sdk-1.1.2.tar.gz",
"has_sig": false,
"md5_digest": "ad2fb11de56f16857efcee5256bb93cf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 59739,
"upload_time": "2025-09-03T06:49:12",
"upload_time_iso_8601": "2025-09-03T06:49:12.462254Z",
"url": "https://files.pythonhosted.org/packages/b2/4e/dd57bd7301c39d25a90f3e8a5c0b78cb7b436dc6f5a1c2683742707e00ba/rpa_sdk-1.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-03 06:49:12",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "rpa-sdk"
}