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

阶段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 | - |

相关推荐
JohnnyDeng9412 小时前
ArkTs-Android 与 ArkTS (HarmonyOS) 存储目录全面对比
android·harmonyos·arkts·1024程序员节
BUG_Jia12 小时前
如何用 HTML 生成 PC 端软件
前端·javascript·html·桌面应用·1024程序员节
木易 士心12 小时前
CSS 样式用法大全
前端·css·1024程序员节
皓月Code12 小时前
第二章、全局配置项目主题色(主题切换+跟随系统)
javascript·css·react.js·1024程序员节
wanhengidc12 小时前
云手机是一种应用软件吗?
运维·服务器·网络·游戏·智能手机·1024程序员节
恶猫12 小时前
_撸猫websocket服务器端,手机远程服务端
远程控制·aardio·autojs·1024程序员节·远控·手机远控·批量控制
WaWaJie_Ngen12 小时前
【设计模式】组合模式(Composite)
设计模式·组合模式·1024程序员节
CN.LG12 小时前
C# 企业微信机器人消息推送
c#·企业微信·1024程序员节·机器人推送
嵌入式-老费12 小时前
Easyx图形库应用(工业自动化领域的应用)
运维·自动化·1024程序员节