feat: 添加无头模式并且优化配置项
This commit is contained in:
@@ -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=测录融合
|
||||||
|
|||||||
@@ -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。
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user