2026-06-02 23:56:19 +08:00
2026-06-02 23:56:19 +08:00
2026-06-02 23:56:19 +08:00
2026-06-02 23:03:42 +08:00
2026-06-02 23:03:42 +08:00
2026-06-02 23:56:19 +08:00
2026-06-02 23:03:42 +08:00

auto-answer

一个纯 Python 的自动练题脚本,用 Playwright 控制 Microsoft Edge,自动进入中石化网络学院“自主练测”的顺序练习页面,并根据页面里的“答案解析”选择正确答案。

不包含 Web 服务和 API 服务,直接命令行运行。

快速使用

最简单方式:双击项目根目录的 start.bat

它会执行:

uv run auto-answer practice --answer-count -1 --delay-ms 500

含义:

  • --answer-count -1:一直答题,直到没有下一题。
  • --delay-ms 500:每答完一题后等待 500ms。
  • 题库名称、账号、密码等从 .env 读取。

首次准备

安装依赖:

uv sync

如果本机 Playwright 没有浏览器运行环境,可执行:

uv run playwright install chromium

本项目默认使用系统里的 Microsoft Edge

BROWSER_CHANNEL=msedge

配置

复制 .env.example.env,然后填写账号密码:

LOGIN_USERNAME=你的账号
LOGIN_PASSWORD=你的密码
QUESTION_BANK=测录融合
ANSWER_COUNT=0
ANSWER_DELAY_MS=0

常用配置说明:

  • LOGIN_URL:登录页地址。
  • TARGET_URL:自主练测入口地址。
  • LOGIN_USERNAME / LOGIN_PASSWORD:登录账号密码。
  • QUESTION_BANK:题库关键词,程序会从页面 tab 中自动匹配最接近的题库。
  • ANSWER_COUNT:自动答题数量,0 表示只进入练习不答题,-1 表示一直答到结束。
  • ANSWER_DELAY_MS:每题答完后的等待时间,单位毫秒。
  • STORAGE_STATE_PATH:保存 cookie/localStorage 的文件。
  • SESSION_STATE_PATH:保存 sessionStorage 的文件。

.env.auth/ 已加入 .gitignore,不会提交到 Git。

常用命令

进入自主练测,但不自动答题:

uv run auto-answer practice

指定题库关键词:

uv run auto-answer practice --bank "测录融合"

答 10 题:

uv run auto-answer practice --bank "测录融合" --answer-count 10

一直答到结束,每题等待 500ms

uv run auto-answer practice --bank "测录融合" --answer-count -1 --delay-ms 500

只登录并保存登录态:

uv run auto-answer login

工作原理

整体流程:

启动 Edge
  -> 打开自主练测页
  -> 如果登录过期,跳转登录页并自动登录
  -> 保存 cookie/localStorage/sessionStorage
  -> 回到自主练测页
  -> 按 QUESTION_BANK 模糊匹配题库 tab
  -> 点击“顺序练习”的“开始练习”
  -> 展开“答案解析”
  -> 读取“正确答案:A/B/C/D”
  -> 点击对应选项
  -> 点击“下一题”
  -> 循环

题库匹配逻辑:

  • 读取页面中所有题库 tab 的文本。
  • QUESTION_BANK--bank 传入的关键词做模糊匹配。
  • 如果关键词包含在题库名里,优先使用该题库。
  • 否则使用相似度最高的题库。

答题逻辑:

  • 每题先点击“答案解析”。
  • 从页面文本中解析 正确答案:B 或类似格式。
  • 如果是多选,例如 正确答案:ABC,会依次点击 A、B、C。
  • 点击“下一题”后等待题号变化。
  • --answer-count -1 时会一直循环,直到找不到下一题或题号不再变化。

目录结构

src/auto_answer/
  cli.py       命令行参数
  config.py    .env 配置
  browser.py   Edge/Playwright 封装
  runner.py    登录、选题库、答题主流程
  solver.py    保留的答题逻辑扩展位
S
Description
中国石化网络学院自动答题
Readme 99 KiB
Languages
Python 97%
Batchfile 3%