一个针对武汉理工大学心理测评系统(
xlt.whut.edu.cn)的 Tampermonkey 用户脚本。
这个脚本在心理测评页面右上角注入一个悬浮控制面板,自动识别 Vant 单选组件形式的题目,按你选定的策略批量勾选选项,并自动点击「同意」「开始测评」「确认」等翻页按钮,实现连续答题。
它不提交、不伪造结果,只是替代人手点选项这一机械动作 —— 最终答案由你自己选择的策略决定。
- 自动识别题目:兼容 Vant 2 / Vant 4 两种
van-radio结构,包括「每个选项一个独立 radio-group」这种非标准布局 - 四种答题策略:中立(中间项)、积极(首项)、消极(末项)、随机
- 两种运行模式:
答当前题:只处理当前屏幕上的题目连续答题:800ms 轮询,自动处理后续所有页面,翻页按钮自动点击
- 随时换策略:连续答题过程中切换下拉框即生效,无需停止重来
- 网络拦截:捕获 XHR / Fetch 返回的题目 JSON,供调试面板查看
- 可拖拽面板:标题栏按住即可拖动,不挡内容
- 调试信息:一键查看当前检测到的 radio 数量、题库捕获情况、已答数量
先确保浏览器已安装 Tampermonkey,然后点击:
https://raw.githubusercontent.com/fieldlu/whut-psy-test/main/whut-psy-test.user.js
Tampermonkey 会自动识别 .user.js 后缀并弹出安装页。
- 下载仓库里的
whut-psy-test.user.js - 打开 Tampermonkey 管理面板 → 实用工具 → 导入文件
- 选择刚下载的文件
在 Tampermonkey 管理面板 → 实用工具 → 「从 URL 安装」,粘贴上面的 raw 链接。
- 打开
https://xlt.whut.edu.cn/stu/*下的测评页面 - 右上角出现紫色面板
🧠 测评助手 v1 - 在下拉框选择答题策略
- 点
✅ 答当前题或▶ 连续答题 - 想停下时点
⏹ 停止
也可以在 Tampermonkey 的脚本菜单里直接触发「连续答题 / 停止 / 调试」。
| 策略 | 行为 | 适用场景 |
|---|---|---|
| 中立(中间) | 选选项列表的中间项 | 量表题,中间通常对应「一般/不确定」 |
| 积极(第1项) | 选第一项 | 选项按「非常符合 → 非常不符合」降序排列 |
| 消极(末项) | 选最后一项 | 同上,反向取 |
| 随机 | 每项随机 | 想制造回答分布,避免全部同值 |
⚠️ 量表题的选项方向各校、各表可能相反。请先用🔍 调试看一眼选项文本,确认方向后再批量跑。
页面加载
├─ 注入悬浮面板(GM_addStyle + DOM)
├─ MutationObserver 监听 DOM 变化(250ms 防抖)
├─ 拦截 XHR / Fetch,尝试捕获题目 JSON
└─ 点击「答当前题 / 连续答题」
↓
扫描 .van-radio-group
↓
├─ radio 数 == group 数 → 特殊结构,全局选 1 个
└─ 常规结构 → 每个 group 内选 1 个
↓
点击 .van-radio__icon(绕开 label 的 @click.stop)
↓
同步 Vue 实例的 modelValue / currentValue
↓
轮询下一轮,直至无题或手动停止
关键点在最后两步:Vant 的 label 上绑了 @click.stop,直接点 label 会被拦掉,所以要打 .van-radio__icon;而视觉选中后 Vue 内部的绑定值不一定同步,因此再直接写一次组件实例的 modelValue/currentValue,双保险确保提交时读到的是新值。
- 只适配 Vant 单选结构,若学校改版为原生
<input type="radio">或其它 UI 库,选择器需重写 CONFIG.secret为接口签名密钥,硬编码在源码中;学校若更换密钥需同步修改- 连续答题依赖页面 SPA 路由切换,若改成整页刷新,计时器会被重置,需重新点击
- 本脚本仅供 学习与技术交流 使用,用于研究 Tampermonkey 脚本与 Vue/Vant 组件交互方式
- 心理测评结果可能影响学校对学生的判断与后续干预,建议尽量按真实感受作答
- 请遵守武汉理工大学及所在学院的相关规定,是否使用由你自行判断
- 使用本脚本产生的一切后果由使用者自行承担,作者不承担任何责任