← 返回 Skills 市场
yiziria

minium-test-fixer

作者 梦中大侠 · GitHub ↗ · v1.0.3 · MIT-0
cross-platform ✓ 安全检测通过
142
总下载
0
收藏
0
当前安装
4
版本数
在 OpenClaw 中安装
/install minium-test-fixer
功能描述
Minium 测试用例修复工具。自动修复测试中的元素定位错误,分析错误日志、读取 WXML 快照、找到正确元素定位并修复代码。当测试报错"找不到元素"、需要优化元素定位、或分析 WXML 结构时使用此技能。支持本地运行日志和云测平台报告。
使用说明 (SKILL.md)

Minium 测试用例修复技能

📖 描述

自动修复 Minium 测试用例中的元素定位错误。当测试用例因元素找不到而失败时,本技能自动分析错误日志、读取 WXML 快照、找到正确的元素定位并修复代码。

核心能力:

  • ✅ 分析 WXML 找到正确元素
  • ✅ 修复元素定位问题
  • ✅ 验证修复后测试通过

🎯 触发条件

核心触发场景:用户提供 Minium 测试错误报告,要求修复用例

触发词

  • "修复用例"
  • "测试报错了"
  • "元素找不到"
  • "帮我看看这个错误"
  • 直接粘贴错误日志/错误报告

支持的报告格式

  1. 本地运行日志 - 直接粘贴终端输出
  2. 云测平台报告 - 粘贴云测平台的错误日志
  3. 错误截图 - 描述错误信息

⚡ 核心规则(必须遵守!)

🚨 规则 1:先运行测试,获取最新 WXML

当用户提供错误报告时,禁止直接修复!

正确流程

第 1 步:运行测试用例
→ minitest -m \x3C模块名> --case \x3C用例名> -c config.json -g
→ 等待测试失败,自动生成 error_wxml/error_page.xml

第 2 步:读取错误日志
→ 找到失败的元素定位(如 self.tap(self.xxx))
→ 记录元素变量名(如 xxx)

第 3 步:在 WXML 中搜索正确元素
→ 搜索元素文本或 class
→ 找到正确的定位方式

第 4 步:提供修复方案给用户确认
→ 展示当前定位和正确定位
→ 等待用户确认

第 5 步:更新代码
→ 修改对应的 Page Object 文件

错误示范(禁止!)

  • ❌ 用户给错误报告 → 直接修改代码(未运行测试)
  • ❌ 假设元素定位(未查看 WXML)
  • ❌ 覆盖用户原有代码(未确认)

🚨 规则 2:页面有多个相同元素时,使用 get_elements()[0]

核心问题:页面里有多个同样的元素,直接点击会失败

正确做法

# ❌ 错误做法(会失败)
self.tap_icon(self.element_name)

# ✅ 正确做法(获取第一个元素)
self.get_elements(self.element_name)[0].tap()

适用场景

  • feed 列表中的多个相同按钮
  • 商品列表中的多个相同操作按钮
  • 任何重复出现的元素

🚨 规则 3:优先使用文本定位,避免长 XPath

核心问题:长 XPath 依赖页面结构索引,页面结构变化就会失效

对比

# ❌ 错误做法(长 XPath,不稳定)
element_name = "/page-wrapper/view/view/view[1]/view[3]/view[4]/view[3]/view[1]/home-sequence-list/view/view/view[6]/view[1]/view[2]"

# ✅ 正确做法(文本定位,稳定)
element_name = "//*[text()='按钮文本']"

定位优先级

  1. 文本定位(最稳定)://*[text()='按钮文本']
  2. CSS selector(较稳定):view.class-name
  3. XPath 属性(中等)://view[@data-key='xxx']
  4. 长 XPath(最不稳定,禁止使用)

🚨 规则 4:无法识别时直接问

当以下情况无法确定元素时

  1. 原定位路径在 WXML 中找不到
  2. 变量名无意义(如 element_1
  3. 没有注释说明元素用途
  4. WXML 中有多个相似元素

正确做法

这个元素的定位路径失效了,变量名是 `feed_follow_leader`。

在最新 WXML 中没找到唯一匹配的元素。

请问这个元素应该显示什么文本?或者截个图告诉我它是哪个按钮?

错误做法

  • ❌ 瞎猜一个文本
  • ❌ 随便选一个相似的
  • ❌ 不确认就直接修改

🚨 规则 5:已存在目录 → 先阅读现有代码结构!

当修复用例时,禁止直接修改!

正确流程

第 1 步:读取现有 Page Object 文件
→ 查看元素定义风格(CSS selector 还是 xpath)
→ 查看方法命名规范

第 2 步:总结现有规则
→ Page Object 命名规则
→ 元素定位规则
→ 测试用例结构

第 3 步:按现有规则修复
→ 新 Page Object 遵循已有命名和结构
→ 新测试用例遵循已有风格和格式
→ 不引入与现有代码冲突的规范

🚨 规则 6:先阅读用户基类代码,再决定使用什么方法!

Page Object 核心规则

  1. 先阅读用户的基类代码(如 basedef.py)

    • 检查用户是否封装了点击、输入等方法
    • 如果有封装 → 使用用户的封装方法
    • 如果没有封装 → 生成封装方法并使用
  2. 检查用户的封装方式

    • 点击方法:可能是 tap(), click(), click_element(), tap_icon()
    • 输入方法:可能是 send_key(), input_text(), type()
    • 滚动方法:可能是 scroll_to(), scroll()
  3. 不要照搬录制脚本的等待时间!

    • 录制脚本中的 self.page.wait_for(x) 是录制工具自动生成的
    • 用户的基类方法(如 tap(), send_key())内部已有等待逻辑
    • 禁止生成多余的 sleep()wait_for()

🚨 规则 7:修复后必须在本地验证!

核心原则:改完之后一定要在本地先自己跑一遍确认没有报错

正确流程

第 1 步:修复元素定位
→ 修改 Page Object 文件

第 2 步:本地运行测试
→ 激活微信开发者工具(AppActivate)
→ minitest -m \x3C模块名> --case \x3C用例名> -c config.json -g

第 3 步:确认测试结果
→ 看到 "case num:1, failed num:0, error num:0" 才算成功
→ 如果还有报错 → 继续修复其他元素

第 4 步:报告用户
→ 本地验证通过后再告知用户
→ 云测平台的用例让用户重新运行

错误示范(禁止!)

  • ❌ 修改代码后不验证就直接报告完成
  • ❌ 只依赖云测平台验证(来回浪费时间)
  • ❌ 假设修复成功(不运行测试)

正确示范

✅ 修复完成!
本地验证结果:
====================case num:1, failed num:0, error num:0====================

主人,本地测试已通过!你可以在云测平台重新运行了!

📋 完整修复流程

步骤 1:运行测试用例(开发者工具保持前台)

方法 A:使用窗口标题激活(推荐)

# 通过窗口标题激活微信开发者工具
$wshell = New-Object -ComObject wscript.shell
$wshell.AppActivate("微信开发者工具")

# 运行测试用例
minitest -m \x3C模块路径> --case \x3C用例名> -c config.json -g

方法 B:使用进程名激活

# 通过进程名激活
Add-Type -AssemblyName System.Windows.Forms
$proc = Get-Process | Where-Object { $_.ProcessName -like "*wechat*" -or $_.MainWindowTitle -like "*开发者工具*" }
if($proc) {
 [System.Windows.Forms.SendKeys]::SendWait("%{TAB}")
 Start-Sleep -Milliseconds 500
}

# 运行测试
minitest -m \x3C模块路径> --case \x3C用例名> -c config.json -g

注意

  • 运行测试前,确保微信开发者工具已打开
  • 使用 AppActivate 直接激活指定窗口(比 Alt+Tab 更可靠)
  • 测试运行期间不要切换到其他窗口

步骤 2:读取错误日志

测试失败后,查看错误堆栈:

File "cases/case/pages/pages/xxx/xxx.py", line 399, in test_method
 self.tap(self.element_name)

提取关键信息

  • 失败文件:pages/pages/xxx/xxx.py
  • 失败行号:399
  • 失败元素:self.element_name

步骤 3:查找当前元素定义

Select-String -Path "\x3C文件路径>" -Pattern "element_name\s*="

示例输出

element_name = "//*[text()='按钮文本']"

步骤 4:读取 WXML 文件

Get-ChildItem "error_wxml\error_page.xml" | Select-Object LastWriteTime

在 WXML 中搜索正确元素

# 搜索文本
Select-String -Path "error_wxml\error_page.xml" -Pattern "按钮文本"

# 搜索 class
Select-String -Path "error_wxml\error_page.xml" -Pattern "operate-btn|more"

# 搜索 custom-modal/popup
Select-String -Path "error_wxml\error_page.xml" -Pattern "custom-modal|popup"

步骤 5:提供修复方案

向用户展示

## 📊 分析结果

**当前元素定义**:
```python
element_name = "//*[text()='按钮文本']"

WXML 中实际结构

\x3Cview class="actionsheet--sheet-item">按钮文本\x3C/view>

建议修复方案

方案 1:使用 class 定位

element_name = "view.class='actionsheet--sheet-item'"

方案 2:使用 text 包含

element_name = "//*[contains(text(),'按钮')]"

主人,确认这个修改吗? 🔧


---

### 步骤 6:用户确认后更新代码

```python
# 使用 edit 工具精确替换
edit(
 path="\x3C文件路径>",
 oldText='element_name = "//*[text()=\'按钮文本\']"',
 newText='element_name = "view.class=\'actionsheet--sheet-item\'"'
)

步骤 7:重新运行测试验证(必须!)

⚠️ 重要:修复后必须在本地验证!

# 激活微信开发者工具
$wshell = New-Object -ComObject wscript.shell
$wshell.AppActivate("微信开发者工具")

# 运行测试
minitest -m \x3C模块路径> --case \x3C用例名> -c config.json -g

确认测试通过

====================case num:1, failed num:0, error num:0====================

只有看到上述输出才算修复完成!

如果还有报错:

  1. 读取新的错误日志
  2. 继续修复下一个元素
  3. 重新运行测试
  4. 直到完全通过

💡 踩坑总结

坑 1:页面有多个相同元素

现象:元素定位正确,但点击失败

原因:页面里有多个同样的元素,tap_icon() 不知道点哪个

解决:使用 get_elements()[0].tap() 获取第一个

案例

# feed_statistic 等按钮在 feed 列表中重复出现
self.get_elements(self.feed_statistic)[0].tap()
self.get_elements(self.feed_order_manage)[0].tap()
self.get_elements(self.feed_wait_thaw_payment)[0].tap()

坑 2:长 XPath 定位不稳定

现象:今天能跑,明天就失败

原因:XPath 依赖页面结构索引,页面结构一变就失效

解决:使用文本定位 //*[text()='按钮文本']

案例

# ❌ 错误做法
element_name = "/page-wrapper/view/view/view[1]/view[3]/view[4]/view[3]/view[1]/home-sequence-list/view/view/view[6]/view[1]/view[2]"

# ✅ 正确做法
element_name = "//*[text()='按钮文本']"

坑 3:开发者工具不在前台

现象:页面跳转超时 WaitTimeoutError

原因:微信开发者工具在后台,页面加载慢或卡住

解决:运行测试前用 AppActivate 激活开发者工具

案例

$wshell = New-Object -ComObject wscript.shell
$wshell.AppActivate("微信开发者工具")
Start-Sleep -Milliseconds 2000

坑 4:元素定义乱码

现象:修改后元素定义变成乱码

原因:PowerShell 字符串转义问题

解决:使用 Python 脚本修改文件

案例

# fix_elements.py
import re
content = open('file.py', 'r', encoding='utf8').read()
content = re.sub(r'element_name = ".*?"', 'element_name = "//*[text()=\'按钮文本\']"', content)
open('file.py', 'w', encoding='utf8').write(content)

🧪 使用示例

示例 1:用户提供错误报告

用户

测试用例 test_xxx 报错了
Error Log:
File "pages/xxx.py", line 399
 self.tap(self.element_name)
RuntimeError: 找不到元素

技能响应

🦞 收到,我来帮你修复!

**第 1 步:运行测试获取最新 WXML**
```bash
minitest -m testcase.xxx --case test_xxx -c config.json -g

[运行测试...]

第 2 步:分析错误

  • 失败元素:element_name
  • 当前定位://*[text()='按钮文本']

第 3 步:查找 WXML [搜索 WXML...]

第 4 步:修复方案 [提供方案...]

主人,确认修改吗?


---

### 示例 2:云测平台报告

**用户**:

测试用例 (testcase.xxx.TestXxx)test_xxx 测试结果 未通过 Error Log: Traceback (most recent call last): File "/home/runtest/minium/framework/libs/unittest/case.py", line 266, in testPartExecutor yield File "/home/runtest/minium/framework/libs/unittest/case.py", line 351, in run self._callTestMethod(testMethod) File "/home/runtest/minium/framework/minitest.py", line 1071, in _callTestMethod method() File "cases/case/testcase/xxx/xxx.py", line 49, in test_xxx self.xxx_page.xxx_method() File "cases/case/pages/pages/xxx/xxx.py", line 169, in xxx_method self.tap(self.element_name)


**技能响应**:

🦞 收到云测报告,我来帮你修复!

分析云测报告

  • 失败文件:pages/pages/xxx/xxx.py
  • 失败行号:169
  • 失败方法:xxx_method
  • 失败元素:self.element_name

第 1 步:本地运行测试获取 WXML

minitest -m testcase.xxx --case test_xxx -c config.json -g

[运行测试...]

第 2 步:在 WXML 中搜索元素 [搜索 WXML...]

第 3 步:提供修复方案 [提供方案...]

主人,确认修改吗?


---

### 示例 3:用户说"修复用例"

**用户**:

修复用例 testcase.xxx


**技能响应**:

🦞 好的,我来运行测试并修复!

运行测试

minitest -m testcase.xxx --case test_xxx -c config.json -g

[等待测试失败 → 读取错误 → 查找 WXML → 提供方案]


---

## 📊 技能统计

| 指标 | 数值 |
|------|------|
| 支持的错误类型 | 元素找不到、元素定位过期、页面结构变化、多元素冲突 |
| 支持的定位方式 | 文本定位、CSS selector、XPath 属性、get_elements |
| 修复流程步骤 | 7 步 |
| 平均修复时间 | 2-5 分钟 |

---

## 🚀 快速开始

当你有 Minium 测试用例报错时,直接说:

修复用例 \x3C用例名>


或者粘贴错误日志,我会自动帮你分析修复!
安全使用建议
This skill is coherent for its stated purpose but exercises invasive local capabilities: it runs tests, activates your WeChat Developer Tools window, reads local project files and WXML snapshots, and can modify source files (it does say it will ask for confirmation before changes). Before installing/using it: (1) ensure you run it on a Windows environment with WeChat devtools and minitest as expected; (2) keep a current backup or use a feature branch / version control so you can revert edits; (3) confirm the agent prompts before it performs edits and local test runs; (4) avoid pasting logs/screenshots that contain secrets or tokens; (5) note the skill source/homepage is unknown — prefer skills from known sources or audit the generated changes before committing. If you want stronger safety, require manual approval for every edit and run tests yourself rather than letting the agent run commands autonomously.
能力评估
Purpose & Capability
Name/description (fixing Minium element-locators using WXML and logs) match the SKILL.md: it reads error logs and WXML, runs minitest, analyzes element definitions and updates Page Object code. No unrelated credentials, binaries, or installs are requested.
Instruction Scope
SKILL.md instructs the agent to run local test commands (minitest), activate the WeChat Developer Tools window via COM/PowerShell, read local files (error_wxml/*.xml, Page Object files, basedef.py), and edit source files (via an edit(...) helper) — all of which are coherent for a fixer but involve executing shell/PowerShell commands and modifying local code. The skill does explicitly require user confirmation before edits and mandates local verification, which is good. Note: the workflow is Windows- and environment-specific (PowerShell, AppActivate, WeChat devtools).
Install Mechanism
Instruction-only skill with no install spec and no code files; nothing is written to disk by the skill itself. This is the lowest-risk install profile.
Credentials
The skill requests no environment variables, credentials, or config paths beyond reading project/test artifacts (config.json, Page Object files, error_wxml). Those file accesses are proportionate to the stated task.
Persistence & Privilege
always is false and there is no request for persistent/global privileges or modifications to other skills or agent-wide config. The skill assumes the agent can run commands and use an edit tool, which is normal for a code-modifying helper.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install minium-test-fixer
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /minium-test-fixer 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.3
Version 1.0.3 - 增加“修复后必须本地验证”的新核心规则(规则 7),强调本地验证通过后方可报告修复完成 - 完善修复流程与规则说明,明确必须本地运行用例并验证无误 - 修正部分流程描述,强化“只依赖云测平台验证”属于错误示范 - 优化示例与流程细节,突出修改后本地验证的重要性 - 其余内容保持不变,未引入破坏性更改
v1.0.2
- 精简了 SKILL.md 文档内容,去除了冗余和重复说明。 - 保留了核心能力和主要修复流程说明,便于用户快速了解用法。 - 精炼了规则描述,更聚焦于实际定位和修复步骤。 - 示例和故障说明部分更简明,突出典型使用场景和常见问题。 - 使整体文档更易阅读和参考。
v1.0.1
minium-test-fixer 1.0.1 - 增补规则:复杂或不明元素定位时,明确要求用户进一步说明或确认(如变量含义不明、WXML多匹配等)。 - 优化文档结构,增加“踩坑总结”板块,归纳多元素、XPath不稳定、前台窗口、编码乱码等常见问题及案例。 - 丰富修复能力列表,强调批量修复、冲突处理和回归验证流程。 - 精简并突出流程和规则重点,便于快速理解和查找。 - 丰富触发场景实例,覆盖常见用户提问和日志样本。
v1.0.0
Initial release of minium-test-fixer skill: - Automatically fixes Minium test cases when element location errors occur. - Analyzes error logs, reads WXML snapshots, and suggests correct element locators. - Enforces step-by-step repair process with user confirmation before modifying code. - Prioritizes robust locator strategies: text > CSS selector > XPath attribute; avoids brittle long XPaths. - Handles multiple/similar elements and popup dialogs with specialized logic. - Adapts to user’s existing Page Object and base method conventions; never overwrites code without review.
元数据
Slug minium-test-fixer
版本 1.0.3
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 4
常见问题

minium-test-fixer 是什么?

Minium 测试用例修复工具。自动修复测试中的元素定位错误,分析错误日志、读取 WXML 快照、找到正确元素定位并修复代码。当测试报错"找不到元素"、需要优化元素定位、或分析 WXML 结构时使用此技能。支持本地运行日志和云测平台报告。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 142 次。

如何安装 minium-test-fixer?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install minium-test-fixer」即可一键安装,无需额外配置。

minium-test-fixer 是免费的吗?

是的,minium-test-fixer 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

minium-test-fixer 支持哪些平台?

minium-test-fixer 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 minium-test-fixer?

由 梦中大侠(@yiziria)开发并维护,当前版本 v1.0.3。

💬 留言讨论