debug_nav.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. """
  2. Debug: Investigate why post-login navigation fails.
  3. """
  4. from playwright.sync_api import sync_playwright
  5. BASE_URL = "http://localhost:80"
  6. with sync_playwright() as p:
  7. browser = p.chromium.launch(headless=True)
  8. page = browser.new_page(viewport={"width": 1440, "height": 900})
  9. console_msgs = []
  10. page.on("console", lambda msg: console_msgs.append(f"[{msg.type}] {msg.text[:200]}"))
  11. page.goto(f"{BASE_URL}/login", wait_until="networkidle", timeout=30000)
  12. page.wait_for_timeout(1000)
  13. page.locator('input[placeholder="用户名"]').fill("admin")
  14. page.locator('input[placeholder="密码"]').fill("admin123")
  15. page.locator('button:has-text("登")').click()
  16. page.wait_for_timeout(5000)
  17. print(f"After login URL: {page.url}")
  18. page.screenshot(path="/tmp/crm-e2e-screenshots/debug-post-login.png")
  19. errors = [m for m in console_msgs if "error" in m.lower()]
  20. print(f"\nConsole errors ({len(errors)}):")
  21. for e in errors[:15]:
  22. print(f" {e[:200]}")
  23. all_msgs = [m for m in console_msgs if m.startswith("[log]") or m.startswith("[warn]")]
  24. print(f"\nConsole logs ({len(all_msgs)}):")
  25. for m in all_msgs[:20]:
  26. print(f" {m[:200]}")
  27. html = page.content()
  28. has_sidebar = "el-menu" in html
  29. has_router_view = "router-view" in html or "app-main" in html
  30. print(f"\nHas sidebar (el-menu): {has_sidebar}")
  31. print(f"Has router-view/app-main: {has_router_view}")
  32. print(f"Body text length: {len(page.locator('body').text_content() or '')}")
  33. browser.close()