feat: 添加无头模式并且优化配置项

This commit is contained in:
chuan
2026-06-03 00:17:22 +08:00
Unverified
parent 6324ac390b
commit f161574a01
5 changed files with 8 additions and 14 deletions
-6
View File
@@ -1,11 +1,5 @@
LOGIN_URL=https://sia.sinopec.com/mobile/#/login
TARGET_URL=https://sia.sinopec.com/mobile/#/app/autonomous/test/index?fromName=index
HEADLESS=false HEADLESS=false
TIMEOUT_MS=30000 TIMEOUT_MS=30000
BROWSER_CHANNEL=msedge
USER_DATA_DIR=.auth/edge
STORAGE_STATE_PATH=.auth/storage_state.json
SESSION_STATE_PATH=.auth/session_storage.json
LOGIN_USERNAME= LOGIN_USERNAME=
LOGIN_PASSWORD= LOGIN_PASSWORD=
QUESTION_BANK=测录融合 QUESTION_BANK=测录融合
+3 -5
View File
@@ -35,7 +35,7 @@ uv sync
uv run playwright install chromium uv run playwright install chromium
``` ```
本项目默认使用系统里的 Microsoft Edge 本项目默认使用系统里的 Microsoft Edge,固定配置在代码中
```text ```text
BROWSER_CHANNEL=msedge BROWSER_CHANNEL=msedge
@@ -56,15 +56,13 @@ RESULT_DELAY_S=2
常用配置说明: 常用配置说明:
- `LOGIN_URL`:登录页地址。
- `TARGET_URL`:自主练测入口地址。
- `LOGIN_USERNAME` / `LOGIN_PASSWORD`:登录账号密码。 - `LOGIN_USERNAME` / `LOGIN_PASSWORD`:登录账号密码。
- `QUESTION_BANK`:题库关键词,程序会从页面 tab 中自动匹配最接近的题库。 - `QUESTION_BANK`:题库关键词,程序会从页面 tab 中自动匹配最接近的题库。
- `ANSWER_COUNT`:自动答题数量,`0` 表示只进入练习不答题,`-1` 表示一直答到结束。 - `ANSWER_COUNT`:自动答题数量,`0` 表示只进入练习不答题,`-1` 表示一直答到结束。
- `ANSWER_WAIT_S`:每题答题前的随机等待时间,格式是 `最小秒数-最大秒数` - `ANSWER_WAIT_S`:每题答题前的随机等待时间,格式是 `最小秒数-最大秒数`
- `RESULT_DELAY_S`:点击答案后到点击下一题前的基准等待秒数,实际随机范围是 `50%-150%` - `RESULT_DELAY_S`:点击答案后到点击下一题前的基准等待秒数,实际随机范围是 `50%-150%`
- `STORAGE_STATE_PATH`:保存 cookie/localStorage 的文件。
- `SESSION_STATE_PATH`:保存 sessionStorage 的文件 固定默认值在 `src/auto_answer/config.py` 中维护,包括登录页、自主练测入口、Edge channel、cookie/localStorage/sessionStorage 保存路径
`.env``.auth/` 已加入 `.gitignore`,不会提交到 Git。 `.env``.auth/` 已加入 `.gitignore`,不会提交到 Git。
+1 -1
View File
@@ -46,7 +46,7 @@ def open_login_page(settings: Settings) -> Iterator[tuple[BrowserContext, Page]]
with sync_playwright() as playwright: with sync_playwright() as playwright:
browser: Browser = playwright.chromium.launch( browser: Browser = playwright.chromium.launch(
channel=settings.browser_channel, channel=settings.browser_channel,
headless=False, headless=settings.headless,
) )
context_options = {} context_options = {}
storage_state_path = Path(settings.storage_state_path) storage_state_path = Path(settings.storage_state_path)
+3 -1
View File
@@ -7,7 +7,9 @@ from auto_answer.runner import AnswerRunner
def build_settings(args: argparse.Namespace) -> Settings: def build_settings(args: argparse.Namespace) -> Settings:
values: dict[str, object] = {"headless": args.headless} values: dict[str, object] = {}
if args.headless:
values["headless"] = True
if args.url and args.command == "login": if args.url and args.command == "login":
values["login_url"] = args.url values["login_url"] = args.url
elif args.url: elif args.url:
+1 -1
View File
@@ -1,4 +1,4 @@
@echo off @echo off
cd /d "%~dp0" cd /d "%~dp0"
uv run auto-answer practice --answer-count -1 --answer-wait-s 5-10 --result-delay-s 2 uv run auto-answer practice
pause pause