浏览器答题工作流 是做什么的?
操作用户现有的浏览器会话,端到端完成经授权的答题工作流。
该工作流主要针对 U校园 / Unipus 开发并验证。将所有其他网站视为未经验证的适配:检查每一次交互,切勿假定提交或完成检测是正确的。
规则
- 使用用户提供的答案、用户指定的答案文件或页面明确展示的答案。
- 不要推断评分题的答案。请询问缺失的答案来源,或让这些题目保持未答状态。
- 保持登录会话状态。优先使用 Chrome 控制来处理现有的 Chrome 状态。
- 将点击“提交”视为需要明确或已获得用户授权的操作。
- 跳过用户排除的题型,例如口语或录音任务。
- 切勿将“已访问”、“已作答”或“已提交一页”等同于“板块已完成”。
- 在 U校园 / Unipus 之外,使用短步骤并在继续之前验证每次写入、导航、提交和完成信号。
工作流
-
盘点任务
- 确定目标单元、板块、排除项、答案来源以及是否授权提交。
- 将答案转换为按板块和题号索引的结构化映射。
- 对于随机选项,存储确切的选项文本,而不仅仅是字母。
-
检查实时状态
- 读取 URL、可见按钮、标签页、题目数量、输入框数量、对话框、iframe 和完成图标。
- 记录哪些板块已完成、进行中或未开始。
- 从第一个未完成的允许板块开始。
-
确定页面结构
- 将页面分类为:每题一页、所有题目在一页、文本填空、混合表单或跨源 iframe。
- 检查选项顺序在多次尝试之间是否会变化。
- 阅读 references/browser-patterns.md 了解稳健的交互模式。
-
保守填写
- 尽可能通过精确规范化的选项文本来匹配单选答案。
- 仅在确认当前选项顺序后使用字母或索引。
- 对于稳定的所有题目在一页的页面,优先使用批量表单填写。
- 对于响应式文本字段,发送真实的
input和change事件。 - 在每题一页的流程中,回答后点击“下一题”,等待导航,然后重新查询 DOM。
-
提交并验证每个板块
- 仅在检查已答题数量与预期数量一致后提交。
- 等待结果、“继续学习”、分数、复核状态或完成标记。
- 移动到下一板块后,验证上一板块的目录图标已变为“已完成”。
- 如果某个项目仍处于“进行中”,在假设原因之前检查其子页面。
-
处理测试和 iframe
- 点击进入确认、开始测试,然后等待资源加载完成。
- 在填写之前确认并关闭任何“资源已加载”的覆盖层。
- 使用无障碍快照和表单填充工具处理跨源 iframe 内容。
- 提交后验证分数/已答题数量,然后使用测试系统的返回或课程链接,以便父课程接收结果。
-
从中断中恢复
- 重新检查完成图标和当前题目状态。
- 仅进入未完成的板块。
- 当页面显示答案但无完成标记时,重新填写该板块。
- 维护一个简洁的进度台账:已完成、按指示跳过、待处理、受阻。
-
最终审计
- 在导航或刷新后重新读取所有目标完成图标。
- 报告已完成的板块、跳过的题型、分数以及任何剩余的进行中原因。
效率
- 使用一次检查调用来收集 URL、可见按钮、链接、输入框数量和完成标记。
- 批量执行独立的 DOM 读取;批量执行稳定的表单写入。
- 仅在确认直接板块链接或已知路由属于当前课程后使用它们。
- 在导航和提交后等待;不要跨页面转换运行长脚本。
- 优先使用简短、可重启的操作,而不是一个覆盖多个页面的脆弱脚本。
完成标准
仅当至少有一个持久信号确认时,才将板块标记为完成:
- 目录标记显示“已完成”;
- 结果页面显示预期的已答题数量或及格分数;
- 页面暴露了已提交/复核状态并且课程记录了该状态。
对于包含排除的口语/录音任务的板块,报告非排除部分为已提交,并解释父板块为何仍处于进行中。