🚀 从Excel到Playwright测试自动化框架
一个全面的测试自动化框架,能够将Excel测试用例转换为可执行的Playwright测试,并具备AI驱动的自动修复能力。
✨ 特点/功能
🔄 旋转或循环的符号,可翻译为“🔄”(保持原样,因为这是一个图形符号,没有直接的中文文字对应,但在描述时可保留原样或用文字说明其含义,如“循环”或“旋转”)。如果非要给这个符号配上一个文字描述的翻译,可以是“循环”或“旋转”,但通常我们会直接使用这个符号本身。 Excel到测试转换
- 使用灵活的列映射解析Excel文件
- 支持各种Excel格式和结构
- 自动测试用例标准化
- 处理后的测试用例JSON导出
机器人 基于人工智能的测试生成
- 使用Gemini AI从Excel数据生成Playwright测试脚本
- 智能测试步骤解析
- 上下文感知选择器生成
- 自然语言到代码的转换
🛠️(扳手,常用于表示修理、工具或进行某种操作) 多级自修复
- 初次尝试直接执行测试
- 局部愈合基本选择器修复和时序调整
- 双子座疗愈利用AI进行截图分析辅助治疗
- 高级治疗复杂的DOM分析和回退策略
📊 表格/数据图表 实时仪表盘
- 实时测试执行监控
- 实时统计(总数、通过、失败、进行中、自动修复)
- 交互式测试结果表
- 带有截图捕获的错误日志
- 愈合尝试之间的代码对比
🔍(放大镜图标,常用于表示搜索、查看细节等动作) 高级调试
- 测试失败时的截图捕获
- 带有时间戳的详细错误日志记录
- 不同愈合尝试的视觉对比
- 可下载的错误报告和测试产物
🏗️ 建筑学
\\\` ├── main.py # FastAPI 后端服务器 ├── utils/(工具目录) │ ├── excel_parser.py # Excel文件解析与标准化 │ └── test_runner.py # 测试执行管理 ├── static/(静态文件目录) │ ├── index.html # Web仪表盘界面 │ ├── scripts.js # 前端JavaScript │ └── styles.css # 仪表板样式文件 ├── generate_and_runall.js # 测试生成和执行引擎 ├── playwright.config.js # Playwright 配置文件 ├── requirements.txt # Python 依赖项 └── README.md # 这个文件 (该句为指令或提示的开始,无实际内容,故不翻译)
🚀 快速入门
先决条件
- Python 3.8或更高版本
- Node.js 16及以上版本
- Playwright 浏览器
安装
- 克隆仓库
\\\bash(注:此为代码块标记,表示以下内容为bash命令或脚本) git clone(在中文语境下,通常直接使用英文命令,但可理解为“使用git克隆”) 进入 test-automation-framework 目录 \\\
- 安装Python依赖项
\\\`bash(注:这行代码本身在中文中没有直接对应的翻译,它表示的是一个 Bash 脚本的开始标记,在中文环境下通常保持原样,不进行翻译。) 使用 pip 安装 requirements.txt 文件中列出的包 (这个句子本身是一个占位符或标记,没有实际意义,但如果要直译的话):
- 安装 Node.js 依赖项
\\\bash(注:\bash\是Unix/Linux操作系统中的一种命令行解释器,此处保留原样,不进行翻译) npm install playwright 翻译为中文是:“使用npm安装Playwright” 安装 Playwright(使用 npx 命令) \\\
- 设置环境变量
\\\bash(注:此为代码块标记,表示以下内容为Bash命令或脚本,翻译时保持原样) 导出 GEMINI_API_KEY="your-gemini-api-key" export CI="false" # 在CI环境中设置为true \\\
运行应用程序
- 启动FastAPI服务器
\\\bash(注:\bash\是Bourne-Again Shell的缩写,是一种广泛使用的Unix/Linux命令行解释器) 运行 python main.py (该句为代码块或特定格式,无实际中文含义,若需翻译其内含文字,需具体提供文字内容) 服务器将在 http://localhost:8000`
- 访问仪表板
打开您的浏览器并导航至 http://localhost:8000
- 上传Excel文件
- 点击“选择文件”并选择您的Excel测试用例文件 - 点击“上传并解析Excel”以处理该文件
- 生成并运行测试
- 点击“生成并运行 Playwright 测试” - 在仪表板上实时监控进度
📋 Excel格式要求
您的Excel文件应包含以下列(支持灵活命名):
| 列 | 描述 | 示例 |
|---|---|---|
| 测试用例ID | 唯一标识符 | TC_001 |
| 测试用例名称 | 描述性名称 | 使用有效凭据登录 |
| 测试步骤 | 分步操作 | 1. 导航至登录页面 |
- 输入用户名
- 输入密码
- 点击登录 |
| 测试数据 | 输入数据 | 用户名:admin 密码:password123 | | 预期结果 | 预期成果 | 用户应成功登录 |
🔧 配置
剧作家配置
编辑 playwright.config.js 进行定制:
- 浏览器设置(Chrome、Firefox、Safari)
- 视口大小和设备模拟
- 测试超时和重试
- 截图和视频录制
API配置
修改 main.py 用于:
- 服务器端口和主机设置
- 文件上传限制
- CORS 配置
- 日志级别
🤖 人工智能集成
Gemini API 设置
- 从以下位置获取您的API密钥: Google AI Studio(谷歌人工智能工作室)
- 设置环境变量:
\\\`bash(注:此为代码块开始的标记,不直接翻译,表示以下内容为bash命令或代码) 导出 GEMINI_API_KEY="在此处输入您的API密钥" (该句为开始代码块或引出后续内容的提示,无实际意义,可译为)“……”(此处表示后续将有具体内容或代码)
自我修复策略
该框架采用了多种修复策略:
- 局部愈合基本修复常见问题
- 选择器调整 - 时间优化 - 元素状态验证
- AI治愈(或AI疗愈)使用Gemini进行高级修复
- 截图分析 - 上下文感知选择器生成 - 自然语言错误解析
- 高级愈合复杂的DOM分析
- 多重选择器回退方案 - 元素关系映射 - 动态内容处理
📊 仪表板功能
实时监控
- 实时状态更新查看当前测试执行状态
- 进度跟踪实时监控测试完成情况
- 统计仪表板查看通过/失败率和愈合尝试次数
测试结果
- 交互式桌面可排序且可过滤的测试结果
- 错误详情带有时间戳的详细错误信息
- 截图画廊使用失败截图进行可视化调试
- 代码比较比较原始代码与修复后的测试代码
出口能力
- JSON 导出下载处理后的测试用例
- 错误日志导出详细错误报告
- 屏幕截图下载失败的截图
- 测试工件(或测试产物)访问生成的测试文件
🛠️ 开发
添加新的治疗策略
- 扩展愈合功能在
generate_and_runall.js - 在尝试处理中添加新的策略逻辑
- 更新仪表板以显示新的治疗类型
自定义Excel解析
- 修改
utils/excel_parser.py - 添加新的列映射模式
- 扩展标准化逻辑
优化仪表板
- 更新
static/index.html用于新的用户界面元素 - 扩展
static/scripts.js为了新功能 - 风格上的变化
static/styles.css
🔍 故障排除
常见问题
测试未在带界面模式下运行
- 确保
playwright.config.jshas(在中文中,作为动词“有”的第三人称单数现在时形式,通常不直接翻译,而是根据上下文融入句子中,如“他/她/它有”)headless: false - 检查显示功能是否可用(针对Linux服务器)
Excel 解析错误
- 验证列名是否符合预期模式
- 检查合并单元格或复杂格式
- 确保数据类型一致
AI治疗不起作用
- 验证
GEMINI_API_KEY设置正确 - 检查API配额和速率限制
- 确保截图正在被捕捉
仪表盘未更新
- 检查浏览器控制台中的JavaScript错误
- 验证WebSocket连接(如果已实现)
- 确保轮询间隔设置得当
📈 性能优化技巧
- 批处理高效处理多个测试用例
- 并行执行配置 Playwright 以进行并行测试运行
- 资源管理在大型测试套件运行期间监控内存使用情况
- 缓存为重复的测试模式实现缓存
🤝 贡献(或:参与贡献)
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推送至分支(
git push origin feature/amazing-feature) - 提交一个拉取请求
📄 许可证
此项目遵循MIT许可证授权——详见 许可证 详情请见文件。
🙏 致谢
- 剧作家 为了构建一个强大的测试框架
- FastAPI 用于高性能Web框架
- Google Gemini 用于AI驱动的测试修复
- 大熊猫 用于Excel的处理功能
📞 支持
如需支持或有疑问:
- 在GitHub仓库中创建一个问题
- 查看上面的故障排除部分
- 审查配置文档
______________________________________________________________________
测试愉快! 🎉
