""" 练习 02: 用 Playwright 持久化浏览器目录保留登录态。 目标: 1. 自己导入 `sync_playwright` 2. 学会 `launch_persistent_context(user_data_dir=...)` 3. 打开一个固定页面后,手动确认这个浏览器目录会被复用 4. 理解为什么不要直接复用你日常 Chrome 默认资料目录 建议: - 第一版先把浏览器正常启动起来 - `user_data_dir` 建议放在项目目录里,便于观察 - 如果你想验证登录态,连续运行两次并观察 cookie / 登录状态变化 运行: ./.venv/bin/python learning/playwright_basics/02_persistent_context.py """ from __future__ import annotations import sys from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent if str(PROJECT_ROOT) not in sys.path: sys.path.insert(0, str(PROJECT_ROOT)) USER_DATA_DIR = PROJECT_ROOT / ".playwright-douyin-profile" DEFAULT_URL = "https://www.douyin.com/" def get_or_create_page(context): if getattr(context, "pages", None): return context.pages[0] return context.new_page() def main() -> None: from playwright.sync_api import sync_playwright with sync_playwright() as playwright: context = playwright.chromium.launch_persistent_context( user_data_dir=str(USER_DATA_DIR), headless=False, ) page = get_or_create_page(context) page.goto(DEFAULT_URL) print(f"[INFO] 用户目录: {USER_DATA_DIR}") print(f"[INFO] 当前 URL: {page.url}") print(f"[INFO] 页面标题: {page.title()}") input("观察浏览器状态后按回车退出...") context.close() if __name__ == "__main__": main()