"""获取完整的 500 错误信息""" import re from playwright.sync_api import sync_playwright BASE_URL = "http://localhost:3000" with sync_playwright() as p: browser = p.chromium.launch(headless=True) context = browser.new_context() page = context.new_page() # 登录教师账号 print(">>> 登录教师账号...") page.goto(f"{BASE_URL}/login", timeout=30000) page.wait_for_load_state("networkidle", timeout=15000) page.locator('input[name="email"]').fill("t_chinese_1@xiaoxue.edu.cn") page.locator('input[name="password"]').fill("123456") page.get_by_role("button", name=re.compile(r"Sign In with Email", re.I)).click() page.wait_for_load_state("networkidle", timeout=20000) page.wait_for_timeout(2000) print(f"登录后 URL: {page.url}") # 访问备课列表页 print("\n>>> 访问 /teacher/lesson-plans...") response = page.goto(f"{BASE_URL}/teacher/lesson-plans", timeout=30000) print(f"HTTP 状态: {response.status if response else 'None'}") if response and response.status >= 400: body = response.text() # 找到所有 data-next-error-message 属性 error_messages = re.findall(r'data-next-error-message="([^"]+)"', body) print(f"\n=== 错误消息 ({len(error_messages)} 条) ===") for msg in error_messages: # 解码 HTML 实体 msg = msg.replace("<", "<").replace(">", ">").replace(""", '"').replace("'", "'").replace("&", "&") print(f"\n{msg}") # 也查找 error 属性 error_codes = re.findall(r'data-next-error-code="([^"]+)"', body) if error_codes: print(f"\n=== 错误代码 ===") for code in error_codes: print(f" {code}") browser.close()