3.9 KiB
3.9 KiB
auto-answer
一个纯 Python 的自动练题脚本,用 Playwright 控制 Microsoft Edge,自动进入中石化网络学院“自主练测”的顺序练习页面,并根据页面里的“答案解析”选择正确答案。
不包含 Web 服务和 API 服务,直接命令行运行。
快速使用
最简单方式:双击项目根目录的 start.bat。
它会执行:
uv run auto-answer practice --answer-count -1 --answer-wait-s 5-10 --result-delay-s 2
含义:
--answer-count -1:一直答题,直到没有下一题。--answer-wait-s 5-10:每题答题前随机等待 5 到 10 秒。--result-delay-s 2:点击答案后到点击下一题前随机等待,范围是 1 到 3 秒。- 题库名称、账号、密码等从
.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_WAIT_S=5-10
RESULT_DELAY_S=2
常用配置说明:
LOGIN_URL:登录页地址。TARGET_URL:自主练测入口地址。LOGIN_USERNAME/LOGIN_PASSWORD:登录账号密码。QUESTION_BANK:题库关键词,程序会从页面 tab 中自动匹配最接近的题库。ANSWER_COUNT:自动答题数量,0表示只进入练习不答题,-1表示一直答到结束。ANSWER_WAIT_S:每题答题前的随机等待时间,格式是最小秒数-最大秒数。RESULT_DELAY_S:点击答案后到点击下一题前的基准等待秒数,实际随机范围是50%-150%。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
一直答到结束,每题答题前等待 5 到 10 秒,点击答案后再等待约 1 到 3 秒:
uv run auto-answer practice --bank "测录融合" --answer-count -1 --answer-wait-s 5-10 --result-delay-s 2
只登录并保存登录态:
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 保留的答题逻辑扩展位