# 执行计划 - 修复非登录用例重复执行登录

> **文档类型**: 执行计划文档
> **创建日期**: 2026-07-15
> **作者**: czj
> **关联文档**: `_问题处理_非登录用例重复执行登录.md`
> **状态**: 待执行

---

## 一、改动总览

| # | 改动项 | 范围 | 说明 |
|---|--------|------|------|
| 1 | 修改 20 个非登录用例的步骤 | 数据库 | 删除前 8 个登录步骤，只保留业务步骤 |
| 2 | 修改 20 个非登录用例的 config | 数据库 | `auto_login: false` → `auto_login: true` |
| 3 | 每个非登录用例末尾增加"返回主页"步骤 | 数据库 | 确保下一用例从主页开始 |

**总计**：20 条用例数据修改，0 个代码文件改动。

---

## 二、详细执行步骤

### Step 1：识别需修改的用例

**不修改的用例**（5 个登录模块用例，`reset_login: true`）：

| 用例 | 原因 |
|------|------|
| 登录-正常登录测试 | 登录功能本身测试 |
| 登录-登录方式切换验证 | 登录功能本身测试 |
| 登录-空账号密码验证 | 登录功能本身测试 |
| 登录-错误密码验证 | 登录功能本身测试 |
| 登录-页面元素验证 | 登录功能本身测试 |

**需修改的用例**（20 个业务用例，`auto_login: false` → `true`，删除登录步骤）：

所有非登录模块的"页面元素验证"用例，如会议管理、会议室列表、会议统计等。

### Step 2：修改用例步骤结构

**修改前**（10 步）：

```json
[
  {"order": 1, "name": "打开登录页面", "action": "navigate", ...},
  {"order": 2, "name": "等待登录表单加载", "action": "wait", ...},
  {"order": 3, "name": "填写账号", "action": "fill", ...},
  {"order": 4, "name": "填写密码", "action": "fill", ...},
  {"order": 5, "name": "填写图形验证码", "action": "fill", ...},
  {"order": 6, "name": "点击登录按钮", "action": "click", ...},
  {"order": 7, "name": "确认同意协议弹窗", "action": "click", ...},
  {"order": 8, "name": "等待主页加载", "action": "wait", ...},
  {"order": 9, "name": "点击XX菜单", "action": "click", ...},
  {"order": 10, "name": "验证XX页面元素", "action": "assert", ...}
]
```

**修改后**（3 步）：

```json
[
  {"order": 1, "name": "点击XX菜单", "action": "click", ...},
  {"order": 2, "name": "验证XX页面元素", "action": "assert", ...},
  {"order": 3, "name": "返回主页", "action": "click", "params": {"selector": ".sidebar-logo, .logo, a[href='#/dashboard'], .el-menu-item:first-child"}}
]
```

### Step 3：修改用例 config

```json
// 修改前
{"auto_login": false, ...}

// 修改后
{"auto_login": true, ...}
```

### Step 4：编写数据修改脚本

用 Python 脚本直接修改 SQLite 数据库中的用例数据：

1. 查询所有 `case_type='ui'` 且 `reset_login` 不为 true 的用例
2. 对每个用例：删除前 8 个步骤（登录步骤），保留剩余步骤，重新编排 order
3. 在最后添加"返回主页"步骤
4. 更新 config 中 `auto_login` 为 `true`
5. 更新数据库

---

## 三、验证步骤

### 3.1 数据验证

修改后查询用例步骤，确认：
- 非登录用例只有 2-3 个业务步骤
- config 中 `auto_login: true`
- 登录用例不受影响

### 3.2 功能验证

| 步骤 | 操作 | 预期结果 |
|------|------|----------|
| 1 | 批量执行会议管理模块用例 | 第一个用例自动登录，后续用例复用登录态 |
| 2 | 查看步骤详情 | 非登录用例只有业务步骤，无登录步骤 |
| 3 | 执行登录模块用例 | 独立执行，`reset_login: true` 清除登录态 |
| 4 | 执行效率对比 | 每个非登录用例节省 ~15 秒 |

---

## 四、风险评估

| 风险 | 概率 | 影响 | 缓解 |
|------|------|------|------|
| 返回主页的选择器在不同页面不一致 | 中 | 末步点击失败 | 使用多选择器回退链 |
| auto_login 登录失败 | 低 | 所有业务用例失败 | 登录逻辑已验证，`_is_logged_in` 防重复 |
| 修改脚本误改登录用例 | 低 | 登录用例被破坏 | 脚本中排除 `reset_login=true` 的用例 |

---

*本文档由 Claude Code 生成，遵循项目执行计划文档规范。*
