影刀:自动化测试网页应用

阶段1:用户交互配置(收集核心参数)

|----------|-------------|--------|----------------------------------------------------------------------------------------------|-------------------------------------------|---------------------|
| 步骤编号 | 操作描述 | 组件 | 配置细节 | 输入/输出变量 | 说明 |
| 1.1 | 创建自定义对话框 | 自定义对话框 | • 标题:网页功能测试配置 • 尺寸:600×400px | - | 集中收集用户配置 |
| 1.2 | 选择测试模块(多选) | 多选框组 | • 选项:按页面实际模块填写(如首页、坐席监控、班长管理、工单管理...) • 绑定变量:test_status["selected_modules"] | 输出:selected_modules(如"班长管理", "知识库") | 选项需与页面模块文本完全一致 |
| 1.3 | 正常截图根路径 | 文件夹选择框 | • 绑定变量:test_status["normal_root"] | 输出:normal_root(如"D:\测试\正常") | - |
| 1.4 | 错误截图根路径 | 文件夹选择框 | • 绑定变量:test_status["error_root"] | 输出:error_root(如"D:\测试\错误") | - |
| 1.5 | WPS配置 | 文本输入框 | • API密钥绑定:test_status["wps_api_key"]• 表格ID绑定:test_status["wps_table_id"] | 输出:WPS认证信息 | - |
| 1.6 | 初始化模块-子菜单映射 | 变量初始化 | • 变量:module_submenus_str(格式:"模块1:子菜单1,子菜单2;模块2:子菜单A...",如"班长管理:工号状态,语音信箱;知识库:知识查询...") | 输出:module_submenus_str | 需与页面子菜单文本一致 |
| 1.7 | 显示对话框并确认 | 显示对话框 | • 模态显示,点击"确认"后生效 | - | 未勾选模块则提示"请选择至少一个模块" |

阶段2:文件夹预处理(确保存储路径)

|----------|-----------|--------|-------------------------------------|------------------------------|-----------------------------|
| 步骤编号 | 操作描述 | 组件 | 配置细节 | 输入变量 | 输出变量 |
| 2.1 | 获取当前日期 | 获取当前日期 | • 格式:YYYYMMDD | - | current_date(如"20251021") |
| 2.2 | 拼接正常截图路径 | 文本拼接 | • 内容:{normal_root}/{current_date} | normal_rootcurrent_date | normal_folder |
| 2.3 | 创建正常截图文件夹 | 创建文件夹 | • 路径:normal_folder,勾选"已存在不创建" | normal_folder | - |
| 2.4 | 拼接错误截图路径 | 文本拼接 | • 内容:{error_root}/{current_date} | error_rootcurrent_date | error_folder |
| 2.5 | 创建错误截图文件夹 | 创建文件夹 | • 路径:error_folder | error_folder | - |
| 2.6 | 拼接错误日志路径 | 文本拼接 | • 内容:{error_folder}/logs | error_folder | error_log_folder |
| 2.7 | 创建错误日志文件夹 | 创建文件夹 | • 路径:error_log_folder | error_log_folder | - |

阶段3:网页自动化测试(核心遍历+定位)

|----------|---------------|---------------|---------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|----------------------------|
| 步骤编号 | 操作描述 | 组件 | 配置细节 | 输入变量 | 输出变量 |
| 3.1 | 打开目标网页 | 打开浏览器 | • 网址:目标系统URL,最大化窗口 | - | browser(浏览器实例) |
| 3.2 | 遍历选中的模块 | ForEach循环 | • 列表:selected_modules • 当前项:current_module(如"班长管理") | selected_modules | current_module |
| 3.3 | 清洗模块名 | 文本替换 | • 替换规则:`\ / : * ? " < > | _` | current_module |
| 3.4 | 提取当前模块的子菜单 | 文本处理 | 1. 分割module_submenus_str["模块1:子菜单...", "模块2:子菜单..."] 2. 筛选含current_module的项→submenu_str 3. 分割submenu_str(冒号+逗号)→submenus | module_submenus_strcurrent_module | submenus(如"工号状态"...) |
| 3.5 | 遍历子菜单 | ForEach循环 | • 列表:submenus • 当前项:current_submenu(如"工号状态") | submenus | current_submenu |
| 3.6 | 清洗子菜单名 | 文本替换 | • 同3.3,处理current_submenu | current_submenu | clean_submenu |
| 3.7 | 定位模块元素(展开按钮) | 获取相似元素列表(web) | • 网页:browser • XPath://div[contains(@class, 'el-submenu__title') and text()='{``{current_module}}'] | browsercurrent_module | module_elements(元素列表) |
| 3.8 | 提取模块元素 | 获取列表指定位置项 | • 列表:module_elements,位置:0 • 容错:若列表为空,返回None | module_elements | target_module |
| 3.9 | 分支判断:模块元素是否存在 | 分支判断 | • 条件:target_module is not None | target_module | - |
| 3.10 | 点击模块(展开子菜单) | 点击元素(web) | • 网页:browser,目标:target_module • 点击方式:左键单击中心点 | browsertarget_module | - |
| 3.11 | 等待子菜单加载 | 等待元素出现(web) | • XPath://li[contains(@class, 'el-menu-item') and text()='{``{current_submenu}}'] • 超时:10秒 | browsercurrent_submenu | submenu_loaded(布尔值) |
| 3.12 | 定位子菜单元素 | 获取相似元素列表(web) | • XPath://div[text()='{``{current_module}}']/following::ul//li[text()='{``{current_submenu}}'] | browsercurrent_module等 | submenu_elements(元素列表) |
| 3.13 | 提取子菜单元素 | 获取列表指定位置项 | • 列表:submenu_elements,位置:0 • 容错:若列表为空,返回None | submenu_elements | target_submenu |
| 3.14 | 点击子菜单(进入页面) | 点击元素(web) | • 网页:browser,目标:target_submenu | browsertarget_submenu | - |
| 3.15 | 检测页面异常 | 组件组合 | 1. HTTP状态码→status_code 2. 控制台错误→console_errors 3. 页面标题→page_title 4. 内容长度→body_length 5. 异常汇总→is_error(布尔值)、error_reason | browser等 | is_errorerror_reason |

阶段4:结果处理(区分正常/错误)

|----------|-----------|-----------|------------------------------------------------------------------------------------------------------------------|----------------------------|-------------------|
| 步骤编号 | 操作描述 | 组件 | 配置细节 | 输入变量 | 输出变量 |
| 4.1 | 初始化结果列表 | 变量初始化 | • 变量:test_results,初始值:空列表 | - | test_results |
| 4.2 | 正常场景:截图 | 网页截图(web) | • 路径:{normal_folder}/{clean_module}_{clean_submenu}_正常.png | browsernormal_folder等 | normal_img_path |
| 4.3 | 正常场景:记录结果 | 列表添加元素 | • 内容:{"模块": clean_module, "子模块": clean_submenu, "状态": "正常", "截图路径": normal_img_path, ...} | 相关变量 | test_results |
| 4.4 | 异常场景:截图 | 网页截图(web) | • 路径:{error_folder}/{clean_module}_{clean_submenu}_异常.png | browsererror_folder等 | error_img_path |
| 4.5 | 异常场景:生成日志 | 写入文本文件 | • 路径:{error_log_folder}/{clean_module}_{clean_submenu}_日志.txt • 内容:时间、模块、异常原因等 | 相关变量 | error_log_path |
| 4.6 | 异常场景:记录结果 | 列表添加元素 | • 内容:{"模块": clean_module, "子模块": clean_submenu, "状态": "错误", "截图路径": error_img_path, "异常原因": error_reason, ...} | 相关变量 | test_results |

阶段5:上传WPS表格

|----------|----------|--------------|---------------------------------------------------------|-------------------------------|---------------|
| 步骤编号 | 操作描述 | 组件 | 配置细节 | 输入变量 | 输出变量 |
| 5.1 | 生成WPS认证头 | 文本拼接 | • 内容:"Token {``{wps_api_key}}" | wps_api_key | auth_header |
| 5.2 | 创建当日视图 | WPS多维表格-创建视图 | • 表格ID:wps_table_id• 视图名:current_date | wps_table_idcurrent_date | - |
| 5.3 | 遍历结果并上传 | ForEach循环+组件 | 1. 上传截图至WPS云存储→screenshot_url 2. 添加记录:模块、子模块、状态、截图链接等 | test_resultsauth_header等 | - |

阶段6:流程结束

|----------|----------|--------|------------------------------------------------|----------------|--------|
| 步骤编号 | 操作描述 | 组件 | 配置细节 | 输入变量 | 说明 |
| 6.1 | 关闭浏览器 | 关闭浏览器 | • 实例:browser | browser | - |
| 6.2 | 提示测试完成 | 提示对话框 | • 内容:"测试完成!结果已上传至WPS(视图:{``{current_date}})" | current_date | - |

相关推荐
学传打活3 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活8 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16816 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心18 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552724 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552724 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝25 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u0103055271 个月前
Java图像处理实战指南
人工智能·1024程序员节
u0103055271 个月前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055271 个月前
Java实用类应用精讲
人工智能·1024程序员节