feat: 更新 README.md,完善使用说明和配置细节

This commit is contained in:
chuan
2026-06-02 23:57:43 +08:00
Unverified
parent 1b7c87f2f2
commit d1ffa9ba05
+99 -22
View File
@@ -1,66 +1,143 @@
# auto-answer
一个尽可能简单的纯 Python 自动答题框架
一个纯 Python 的自动练题脚本,用 Playwright 控制 Microsoft Edge,自动进入中石化网络学院“自主练测”的顺序练习页面,并根据页面里的“答案解析”选择正确答案
当前只包含命令行入口、配置、浏览器控制和答题逻辑占位,不包含 Web/API
不包含 Web 服务和 API 服务,直接命令行运行
## 安装
## 快速使用
最简单方式:双击项目根目录的 `start.bat`
它会执行:
```bat
uv run auto-answer practice --answer-count -1 --delay-ms 500
```
含义:
- `--answer-count -1`:一直答题,直到没有下一题。
- `--delay-ms 500`:每答完一题后等待 500ms。
- 题库名称、账号、密码等从 `.env` 读取。
## 首次准备
安装依赖:
```powershell
uv sync
```
如果本机 Playwright 没有浏览器运行环境,可执行:
```powershell
uv run playwright install chromium
```
## 运行
本项目默认使用系统里的 Microsoft Edge
```powershell
uv run auto-answer login
uv run auto-answer run
```text
BROWSER_CHANNEL=msedge
```
打开自主练测页,如果登录过期则自动登录:
## 配置
复制 `.env.example``.env`,然后填写账号密码:
```dotenv
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。
## 常用命令
进入自主练测,但不自动答题:
```powershell
uv run auto-answer practice
```
指定题库关键词,程序会自动选择匹配度最高的题库 tab,并进入顺序练习
指定题库关键词:
```powershell
uv run auto-answer practice --bank "测录融合"
```
进入顺序练习后自动答指定数量的题:
答 10 题:
```powershell
uv run auto-answer practice --bank "测录融合" --answer-count 10
```
一直答到没有下一题,并在每题等待 500ms
一直答到结束,每题等待 500ms
```powershell
uv run auto-answer practice --bank "测录融合" --answer-count -1 --delay-ms 500
```
连续登录并复用同一个 Edge 窗口
登录并保存登录态
```powershell
uv run auto-answer start
uv run auto-answer login
```
也可以复制 `.env.example``.env`,然后直接运行:
## 工作原理
```powershell
uv run auto-answer
整体流程:
```text
启动 Edge
-> 打开自主练测页
-> 如果登录过期,跳转登录页并自动登录
-> 保存 cookie/localStorage/sessionStorage
-> 回到自主练测页
-> 按 QUESTION_BANK 模糊匹配题库 tab
-> 点击“顺序练习”的“开始练习”
-> 展开“答案解析”
-> 读取“正确答案:A/B/C/D”
-> 点击对应选项
-> 点击“下一题”
-> 循环
```
## 结构
题库匹配逻辑:
- 读取页面中所有题库 tab 的文本。
-`QUESTION_BANK``--bank` 传入的关键词做模糊匹配。
- 如果关键词包含在题库名里,优先使用该题库。
- 否则使用相似度最高的题库。
答题逻辑:
- 每题先点击“答案解析”。
- 从页面文本中解析 `正确答案:B` 或类似格式。
- 如果是多选,例如 `正确答案:ABC`,会依次点击 A、B、C。
- 点击“下一题”后等待题号变化。
- `--answer-count -1` 时会一直循环,直到找不到下一题或题号不再变化。
## 目录结构
```text
src/auto_answer/
cli.py 命令行入口
config.py 配置读取
browser.py Playwright 浏览器封装
runner.py 主流程
solver.py 答题逻辑
cli.py 命令行参数
config.py .env 配置
browser.py Edge/Playwright 封装
runner.py 登录、选题库、答题主流程
solver.py 保留的答题逻辑扩展位
```