"""小程序 Page Object 基类。""" from datetime import datetime from pathlib import Path from playwright.sync_api import Page, Locator, expect SCREENSHOTS_DIR = Path("output/screenshots") class MiniProgramBasePage: """小程序 Page Object 基类。""" def __init__(self, page: Page, timeout_ms: int = 30_000): self.page = page self.timeout = timeout_ms def wait_visible(self, locator: Locator, timeout_ms: int | None = None) -> None: expect(locator).to_be_visible(timeout=timeout_ms or self.timeout) def click_when_ready(self, locator: Locator) -> None: self.wait_visible(locator) locator.click() def screenshot(self, name: str) -> str: scenario_dir = SCREENSHOTS_DIR / self.__class__.__name__ scenario_dir.mkdir(parents=True, exist_ok=True) ts = datetime.now().strftime("%Y%m%d_%H%M%S") path = str(scenario_dir / f"{name}_{ts}.png") self.page.screenshot(path=path) return path