UX等待状态审计工具 ux-waiting-audit

这是一个专业的用户体验审计技能,专门用于评估Web应用程序在长时间运行操作(30秒以上)时的等待状态。通过浏览器自动化技术,系统性地分析加载状态、进度指示器、用户反馈机制等关键UX元素,生成包含截图、清单评估和优先级建议的全面审计报告。关键词:用户体验审计、加载状态分析、进度指示器、浏览器自动化、UX优化、Web应用性能、等待时间评估、前端测试。

测试 0 次安装 0 次浏览 更新于 3/2/2026

name: ux-waiting-audit description: 使用浏览器自动化审计Web应用中长时间运行操作(30秒以上)的UX等待状态。当被要求评估、审计或分析产品的加载状态、等待时间、进度指示器或在慢速操作期间的用户体验时使用。需要浏览器自动化(Chrome MCP工具)。生成包含截图、清单评估和优先级建议的综合报告。

UX等待状态审计

使用浏览器自动化评估应用程序如何处理长时间运行的操作(30秒以上)。

核心原则

截图优先,DOM其次 — 导航或卡住时始终截图。视觉检查优于DOM探测。

📸 截图 → 👀 视觉分析 → 🎯 点击坐标 → 📸 验证 → 重复

关键:截图优先的自动化

何时截图

始终截图:

  • 打开任何URL后(初始状态)
  • 尝试与元素交互前
  • 当任何JavaScript返回“缺失值”或失败时
  • 点击/提交后(验证成功)
  • 长时间操作期间的定时间隔

为什么截图优于DOM探测

DOM方法 截图方法
复杂选择器静默失败 视觉显示确切的UI状态
“缺失值”不提供信息 图像揭示按钮位置
10+次尝试查找元素 1次截图 → 点击坐标
无法看到实际用户体验 看到用户看到的完全相同内容

截图工作流模式

# 1. 导航
Control Chrome:open_url(TARGET_URL)
sleep(2)

# 2. 始终先截图
# 使用浏览器截图或html2canvas
# 在任何交互前分析图像

# 3. 如果需要交互,优先坐标而非选择器
# 看到截图后:“提交按钮大约在~(1200, 650)”
Control Chrome:execute_javascript("document.elementFromPoint(1200, 650).click()")

# 4. 再次截图验证

快速开始工作流

阶段1:设置与导航

# 1. 导航到目标URL
Control Chrome:open_url(TARGET_URL)
sleep(3)

# 2. 截图 - 查看加载内容
# 分析:哪些可见?交互元素在哪里?

# 3. 请求用户帮助识别:
#    - 要测试的操作
#    - 如何触发(按钮位置、所需输入)

阶段2:触发操作(困难部分)

这通常是审计卡住的地方。 现代SPA具有复杂的UI。

# 策略1:请求用户指导
# “我看到页面了。你能描述按钮在哪里或点击什么吗?”

# 策略2:使用简单、有针对性的JS
Control Chrome:execute_javascript("document.querySelector('button[type=submit]').click()")

# 策略3:基于坐标的点击(截图后)
Control Chrome:execute_javascript("document.elementFromPoint(X, Y).click()")

# 策略4:让用户手动触发
# “请点击按钮开始操作,然后告诉我何时正在处理”

阶段3:捕获等待状态

操作运行后:

# T+0秒:操作开始时立即截图
# T+10秒:10秒后截图
sleep(10)
# 截图 + capture_state.js

# T+30秒:30秒后截图
sleep(20)
# 截图 + capture_state.js

# T+完成:完成时截图
# 观察指示完成的UI变化

阶段4:评估与报告

# 1. 根据清单评估截图(见references/checklist.md)
# 2. 生成带注释截图的报告
# 3. 优先级建议

故障排除:卡住时

问题:找不到/点击元素

❌ 错误:不断尝试不同的选择器
   → 浪费时间,静默失败

✅ 正确:截图,视觉分析
   → 必要时请求用户帮助
   → 使用基于坐标的点击

问题:JavaScript返回“缺失值”

这通常意味着:

  1. 脚本太复杂(简化它)
  2. 元素不存在(截图验证)
  3. 时机问题(添加sleep,重试)

修复: 使用简单的一行JS,而非复杂函数。

// ❌ 复杂(静默失败)
(function() { const elements = []; ... return JSON.stringify(elements); })()

// ✅ 简单(清晰结果)
document.body.innerText.substring(0, 500)
document.querySelectorAll('button').length
document.querySelector('.loading') !== null

问题:表单无法提交

按顺序尝试:

  1. 截图查看提交按钮位置
  2. document.forms[0].submit()
  3. 按坐标点击提交按钮
  4. 请求用户手动提交

审计指令

步骤1:理解目标

询问用户:

  1. 要审计的URL
  2. 要测试的操作(搜索、报告生成、AI任务等)
  3. 如何触发 — 按钮名称、位置或步骤
  4. 预期持续时间(帮助校准截图间隔)
  5. 任何认证要求(如需登录凭据)

如果用户可用: 请求他们手动触发操作,同时您捕获截图。这避免了导航复杂性。

步骤2:捕获序列

始终先截图。 然后运行简单的状态检查:

// 不会静默失败的简单一行代码:

// 检查加载指示器
!!document.querySelector('[class*="spin"], [class*="load"], .spinner')

// 检查进度条
!!document.querySelector('progress, [role="progressbar"]')

// 获取可见文本(查找状态消息)
document.body.innerText.substring(0, 1000)

// 统计出现的结果数量
document.querySelectorAll('[class*="result"], [class*="item"]').length

捕获时间线:

时间 操作
T+0秒 截图 + 记录触发内容
T+10秒 截图 + 简单状态检查
T+30秒 截图 + 简单状态检查
T+完成 截图 + 最终状态

步骤3:根据清单评估

加载并对照references/checklist.md评估。为每个类别评分:

  • ✅ 存在且实施良好
  • ⚠️ 部分实施 / 需要改进
  • ❌ 缺失
  • N/A 不适用于此操作

步骤4:生成报告

使用references/report-template.md中的模板。


关键评估模式

渐进式值检测

查找:

// 出现部分结果
document.querySelectorAll('[class*="result"], [class*="item"], li, tr').length

// 流式内容
document.querySelector('[class*="stream"], [class*="typing"], [class*="cursor"]')

心跳指示器

查找:

// 计数器
document.body.innerText.match(/\d+\s*(found|processed|complete|%)/gi)

// 动画(CSS或JS)
document.querySelectorAll('[class*="animate"], [class*="pulse"], [class*="spin"]')

时间估计

查找:

// 剩余时间文本
document.body.innerText.match(/(\d+\s*(sec|min|second|minute)|remaining|left|ETA)/gi)

// 进度百分比
document.querySelector('[role="progressbar"]')?.getAttribute('aria-valuenow')

截图比较策略

对于每个间隔,记录:

  1. 与先前截图相比发生了什么变化
  2. 活动信号(计数器、动画、部分结果)
  3. 用户焦虑因素(冻结的UI、无反馈)

比较:

元素 T+0秒 T+10秒 T+30秒 完成
结果可见
计数器/进度
状态消息
动画活动

报告输出结构

生成包含以下内容的Markdown报告:

  1. 总结评分:X/10个类别已解决
  2. 截图库:带时间戳和注释
  3. 优势:哪些工作良好
  4. 关键差距:最损害UX的缺失元素
  5. 快速改进:低投入、高影响的改进
  6. 详细发现表:见references/report-template.md
  7. 优先级矩阵:P1/P2/P3建议

最佳实践对比

参考这些优秀等待UX的示例:

  • Figma导出:进度条 + 百分比 + 文件计数
  • Notion AI:流式文本 + 光标动画
  • ChatGPT:逐令牌流式传输 + 停止按钮
  • Linear搜索:即时部分结果 + 细化
  • Vercel部署:逐步进度 + 日志

要测试的错误场景

如果可能,测试:

  1. 部分失败:UI是否优雅降级?
  2. 网络中断:进度是否保留?
  3. 超时:是否有清晰反馈?
// 模拟慢速网络(如果DevTools可用)
// 或短暂断开连接并观察行为

常见问题标记

问题 用户影响 快速修复
仅加载指示器 焦虑、放弃 添加状态文本
无进度 “卡住了吗?” 添加心跳计数器
无取消 被困感 添加取消按钮
静默完成 错过结果 添加完成动画
全页面阻塞 无法多任务 移至后台