1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| """ 登录功能调试脚本 - debug_login.py """ from playwright.sync_api import sync_playwright import time import json
def debug_login(): print("="*80) print("🔍 开始调试登录功能") print("="*80) with sync_playwright() as p: browser = p.chromium.launch( headless=False, channel="chrome", slow_mo=500, args=[ '--no-sandbox', '--disable-infobars', '--disable-extensions' ] ) context = browser.new_context(viewport={'width': 1920, 'height': 1080}) page = context.new_page() console_messages = [] network_requests = [] page.on("console", lambda msg: console_messages.append({ 'type': msg.type, 'text': msg.text })) page.on("response", lambda res: network_requests.append({ 'url': res.url, 'status': res.status, 'method': res.request.method })) print("\n→ 导航到登录页面...") page.goto('http://localhost:5173/login') page.wait_for_load_state('networkidle') time.sleep(2) page.screenshot(path='debug_01_initial.png', full_page=True) print("📸 已保存初始状态截图") print("\n🔍 检查页面元素...") username_input = page.locator('input[name="username"]').first password_input = page.locator('input[name="password"]').first login_button = page.locator('button[type="submit"]').first assert username_input.count() > 0, "❌ 未找到用户名输入框" assert password_input.count() > 0, "❌ 未找到密码输入框" assert login_button.count() > 0, "❌ 未找到登录按钮" print("✓ 所有必需元素都存在") print("\n→ 填写用户名: admin") username_input.fill('admin') print("→ 填写密码: admin123") password_input.fill('admin123') time.sleep(1) page.screenshot(path='debug_02_filled.png', full_page=True) print("\n→ 点击登录按钮...") login_button.click() time.sleep(3) page.screenshot(path='debug_03_after_click.png', full_page=True) current_url = page.url print(f"\n→ 当前 URL: {current_url}") if '/login' in current_url: print("⚠️ 仍在登录页面,登录可能失败") error_element = page.locator('.bg-red-50').first if error_element.count() > 0: error_text = error_element.inner_text() print(f"❌ 错误提示: {error_text}") page.screenshot(path='debug_04_error.png', full_page=True) else: print("✅ 已跳转到首页,登录成功") page.screenshot(path='debug_05_success.png', full_page=True) debug_info = { 'console_messages': console_messages[-20:], 'network_requests': [r for r in network_requests if 'api' in r['url']], 'current_url': current_url, 'timestamp': time.time() } with open('debug_login_info.json', 'w', encoding='utf-8') as f: json.dump(debug_info, f, ensure_ascii=False, indent=2) print("\n📄 调试信息已保存到 debug_login_info.json") print("\n按 Enter 关闭浏览器...") input() browser.close()
if __name__ == '__main__': debug_login()
|