#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
逐步测试 Playwright - 找出问题
"""

import sys

print("="*60)
print("  Playwright 逐步测试")
print("="*60)
print()

# 步骤 1: 检查 Playwright 是否安装
print("[步骤 1/5] 检查 Playwright 是否安装...")
try:
    import playwright
    from playwright.sync_api import sync_playwright
    print("✓ Playwright 已安装")
except ImportError as e:
    print(f"❌ Playwright 未安装: {e}")
    sys.exit(1)
print()

# 步骤 2: 检查浏览器
print("[步骤 2/5] 检查可用浏览器...")
try:
    import subprocess
    result = subprocess.run(
        ["playwright", "show-browsers"],
        capture_output=True,
        text=True,
        timeout=10
    )
    print(f"  输出: {result.stdout}")
    if "chromium" in result.stdout.lower():
        print("✓ Chromium 已安装")
    else:
        print("⚠ Chromium 未安装（但可以用系统 Chrome）")
except Exception as e:
    print(f"⚠ 无法检查: {e}")
print()

# 步骤 3: 尝试启动 Chromium（不用系统 Chrome）
print("[步骤 3/5] 测试启动 Playwright Chromium...")
try:
    print("  正在启动浏览器...")
    from playwright.sync_api import sync_playwright

    with sync_playwright() as p:
        print("  Playwright 已启动")

        browser = p.chromium.launch(
            headless=False,  # 显示窗口
            timeout=60000
        )
        print("  ✓ 浏览器已启动！")

        page = browser.new_page()
        print("  ✓ 页面已创建")

        page.goto("https://www.baidu.com")
        print(f"  ✓ 页面已加载: {page.title}")

        print("  等待 2 秒...")
        import time
        time.sleep(2)

        print("  关闭浏览器...")
        browser.close()
        print("  ✓ 浏览器已关闭")
        print()
        print("="*60)
        print("  ✓ Playwright Chromium 测试成功！")
        print("="*60)

except Exception as e:
    print(f"  ❌ 失败: {e}")
    import traceback
    traceback.print_exc()
    print()
print()

# 步骤 4: 尝试使用系统 Chrome
print("[步骤 4/5] 测试系统 Chrome...")
try:
    print("  正在启动系统 Chrome...")
    from playwright.sync_api import sync_playwright

    with sync_playwright() as p:
        print("  Playwright 已启动")

        browser = p.chromium.launch(
            headless=False,
            channel="chrome",  # 使用系统 Chrome
            timeout=60000
        )
        print("  ✓ Chrome 已启动！")

        page = browser.new_page()
        print("  ✓ 页面已创建")

        page.goto("https://www.baidu.com")
        print(f"  ✓ 页面已加载: {page.title}")

        print("  等待 2 秒...")
        import time
        time.sleep(2)

        print("  关闭浏览器...")
        browser.close()
        print("  ✓ Chrome 已关闭")
        print()
        print("="*60)
        print("  ✓ 系统 Chrome 测试成功！")
        print("="*60)

except Exception as e:
    print(f"  ❌ 失败: {e}")
    import traceback
    traceback.print_exc()
    print()
print()

# 步骤 5: 尝试使用系统 Edge
print("[步骤 5/5] 测试系统 Edge...")
try:
    print("  正在启动系统 Edge...")
    from playwright.sync_api import sync_playwright

    with sync_playwright() as p:
        print("  Playwright 已启动")

        browser = p.chromium.launch(
            headless=False,
            channel="msedge",  # 使用系统 Edge
            timeout=60000
        )
        print("  ✓ Edge 已启动！")

        page = browser.new_page()
        print("  ✓ 页面已创建")

        page.goto("https://www.baidu.com")
        print(f"  ✓ 页面已加载: {page.title}")

        print("  等待 2 秒...")
        import time
        time.sleep(2)

        print("  关闭浏览器...")
        browser.close()
        print("  ✓ Edge 已关闭")
        print()
        print("="*60)
        print("  ✓ 系统 Edge 测试成功！")
        print("="*60)

except Exception as e:
    print(f"  ❌ 失败: {e}")
    import traceback
    traceback.print_exc()
    print()

print()
print("所有测试完成！")
print()
print("如果所有测试都失败，可能的原因：")
print("  1. Playwright 安装不完整")
print("  2. 需要运行: python -m playwright install chromium")
print("  3. 系统防火墙或安全软件阻止")
print("  4. Windows Defender 或其他安全软件")
