在 RPA 平台动辄收费、配置复杂的当下,借助 AI 辅助编程,我们完全可以从零搭建一套免费、可定制、企业级稳定的关键字驱动 RPA 框架。本文以「系统登录→Excel 文件上传」为典型场景,手把手教你用 Python+Selenium 打造轻量化 RPA,全程无冗余代码,AI 助力效率提升 10 倍,让商用 RPA 平台失去 “性价比” 优势!

一、为什么说 “AI 让自研 RPA 更易落地”?
商用 RPA 平台的核心卖点是 “低代码、易维护”,但借助 AI 辅助,自研关键字驱动 RPA 能实现:
表格

在这里插入图片描述

二、核心需求与技术选型

  1. 需求目标
    自动完成系统登录(用户名 + 密码输入);
    自动上传 Excel 文件并解析,全程稳定无报错;
    所有操作通过 Excel 配置关键字实现,非开发人员也能修改流程;
    适配 RPA 常见的重试机制,降低偶发失败率。

  2. 技术栈
    核心框架:Python + Selenium(浏览器自动化);
    用例管理:Excel(关键字驱动配置);
    依赖库:pandas(读取 Excel)、selenium(浏览器控制);
    AI 辅助工具:豆包(需求拆解、代码生成、问题排查)。
    三、整体流程设计(AI 辅助拆解)

  3. 流程架构(AI 生成可视化逻辑)
    借助 AI 生成的流程图谱,快速理清关键字驱动 RPA 的核心逻辑,避免流程设计漏洞:
    在这里插入图片描述

  4. 关键字设计(AI 优化规范)
    传统关键字设计易混乱,AI 根据 “易用性 + 可扩展” 原则,优化出标准化 Excel 列规范,适配新手和企业级使用:在这里插入图片描述
    四、代码实现(AI 辅助生成 + 优化)

  5. 文件清单

  6. 在这里插入图片描述

  7. 核心 RPA 脚本(rpa_main.py)
    以下代码由 AI 生成初稿,经微调后适配实际场景,包含 AI 建议的 “参数类型兼容 + 重试机制”,解决 90% 新手常见问题:

 def _visit_web():
            if not param1:
                raise Exception("❌ 访问网址参数为空")
            self.driver.get(param1)
            # 等待页面标题加载完成
            WebDriverWait(self.driver, 10).until(lambda d: d.title != "")
            print(f"✅ 访问网址成功:{param1} | 页面标题:{self.driver.title}")
            return True

        # ========== 关键字:点击元素 ==========
        def _click_element():
            if not param1:
                raise Exception("❌ 元素XPath参数为空")
            # 排除文件选择框的直接点击
            if "file-upload" in param1 or "el-upload__input" in param1:
                raise Exception("❌ 文件选择框禁止直接click,请使用uploadFile关键字")
            
            element = WebDriverWait(self.driver, 10).until(
                EC.element_to_be_clickable((By.XPATH, param1))
            )
            element.click()
            handle_alert(self.driver)  # 点击后检查弹窗
            print(f"✅ 点击元素成功:{param1}")
            return True

        # ========== 关键字:输入文本 ==========
        def _input_text():
            if not param1:
                raise Exception("❌ 输入元素XPath参数为空")
            if not param2:
                raise Exception("❌ 输入内容参数为空")
            
            element = WebDriverWait(self.driver, 10).until(
                EC.presence_of_element_located((By.XPATH, param1))
            )
            element.clear()
            element.send_keys(param2)
            
            # 校验输入是否成功
            input_value = element.get_attribute("value").strip()
            if input_value != param2.strip():
                raise Exception(f"❌ 输入内容不匹配(预期:{param2},实际:{input_value})")
            print(f"✅ 输入文本成功:{param1}{param2}")
            return True
  1. 登录页面(login.html)
    AI 根据 “简洁 + 适配自动化” 原则生成的登录页,无冗余样式,确保 Selenium 定位稳定:
在这里插入代码片
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>系统登录</title>
    <style>
        *{margin:0;padding:0;box-sizing:border-box;font-family:Microsoft YaHei,sans-serif}
        body{display:flex;align-items:center;justify-content:center;height:100vh;background:#f5f7fa}
        .login-form{width:380px;padding:40px;background:#fff;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.1)}
        .title{text-align:center;margin-bottom:30px;font-size:22px;color:#333}
        .el-input{margin-bottom:20px}
        .el-input__wrapper{display:flex;align-items:center;border:1px solid #dcdfe6;border-radius:4px;padding:0 10px;height:40px}
        .el-input__inner{flex:1;border:none;outline:none;height:100%}
        .el-input__prefix{margin-right:8px;color:#909399}
        .login-btn{width:100%;height:40px;background:#409eff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px}
        .login-btn:hover{background:#66b1ff}
    </style>
</head>
<body>
    <form class="el-form login-form">
        <h2 class="title">系统登录</h2>

        <div class="el-input">
            <span class="el-input__prefix">👤</span>
            <input class="el-input__inner" type="text" placeholder="用户名" id="username">
        </div>

        <div class="el-input">
            <span class="el-input__prefix">🔒</span>
            <input class="el-input__inner" type="password" placeholder="密码" id="password">
        </div>

        <button type="button" class="login-btn" onclick="login()">登录</button>
    </form>

    <script>
        function login() {
            var user = document.getElementById('username').value.trim();
            var pwd = document.getElementById('password').value.trim();
            if (user && pwd) {
                // 登录成功跳转到上传页面
                window.location.href = "upload_page.html";
            } else {
                alert("请输入用户名和密码");
            }
        }
    </script>
</body>
</html>

  1. Excel 用例文件(rpa_steps.xlsx)
    AI 根据关键字规范生成的标准化用例,直接复制即可使用:
    在这里插入图片描述

五、为什么这套自研 RPA 能 “让平台无路可走”?
成本碾压:商用 RPA 平台按节点收费,这套方案零成本,且无 “升级收费”“功能限制”;
效率持平甚至超越:AI 辅助下,开发效率比学习商用平台更快,新手 1 小时落地;
定制化无上限:可按需添加 “验证码识别”“多文件上传”“结果校验” 等功能,商用平台需额外付费;
维护更简单:Excel 关键字配置比平台的 “可视化组件” 更直观,非开发人员也能修改步骤。
六、扩展场景(AI 提示的进阶方向)
多环境适配:在 Excel 中添加 “环境列”,通过参数切换测试 / 生产环境;
结果校验:新增verifyText关键字,验证上传后表格是否显示数据;
批量执行:读取多个 Excel 用例,实现 “登录→上传→退出” 批量操作;
日志输出:AI 辅助添加logging模块,输出详细执行日志到文件,方便排查问题。
总结
“让 RPA 平台无路可走” 并非空谈 —— 借助 AI 辅助编程,我们能以极低的学习成本、零成本搭建企业级稳定的关键字驱动 RPA。这套框架不仅能搞定 “登录 + Excel 上传”,还能适配网页爬取、数据录入、批量下载等绝大多数办公自动化场景。商用 RPA 平台的核心优势正在被 AI 消解,自研 RPA 才是中小团队 / 个人的最优解!
(附:实战录屏动图,展示 “打开浏览器→登录→上传 Excel” 完整流程,直观感受自研 RPA 的流畅性)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐