"""
练习 03: 用 Playwright 等待元素并定位元素。

目标:
1. 练会 `page.locator(...)`
2. 练会 `page.get_by_role(...)`
3. 练会等待元素出现
4. 成功打印一个稳定元素的文本内容

建议:
- 先选一个结构稳定的页面，不要一上来就拿复杂站点练
- 如果定位不到元素，先打印页面标题和 URL，确认你打开的是对的页面
- 第一版优先使用 role / text 这种更直观的定位方式

运行:
    ./.venv/bin/python learning/playwright_basics/03_wait_and_locate.py
"""

DEFAULT_URL = "https://example.com/"


def main() -> None:
    from playwright.sync_api import sync_playwright

    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        page = browser.new_page()
        page.goto(DEFAULT_URL)

        heading = page.get_by_role("heading", name="Example Domain")
        heading.wait_for()
        print(f"[INFO] 标题文本: {heading.text_content()}")

        first_paragraph = page.locator("p").first
        first_paragraph.wait_for()
        print(f"[INFO] 第一段文本: {first_paragraph.text_content()}")

        input("按回车退出...")
        browser.close()


if __name__ == "__main__":
    main()
