Files
assist/test_navigation.py
Jeason 20c5ce355a fix: 修复前端导航和页面跳转问题
- 添加统一的导航菜单到所有页面
- 修复页面路由映射和高亮状态
- 创建 navigation.js 统一管理页面跳转
- 添加 test_navigation.py 路由测试工具
- 支持仪表板、预警管理、智能对话、HTTP对话页面间无缝切换

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-07 10:12:17 +08:00

121 lines
3.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
前端导航测试脚本
测试所有页面路由是否正常工作
"""
import requests
import sys
import time
def test_page_routes(base_url="http://localhost:5000"):
"""测试所有页面路由"""
# 测试的路由列表
routes = [
("/", "仪表板"),
("/dashboard", "仪表板"),
("/alerts", "预警管理"),
("/chat", "智能对话"),
("/chat-http", "HTTP对话")
]
print("🔍 开始测试前端路由...")
print(f"📍 基础URL: {base_url}")
print("-" * 60)
results = []
for route, name in routes:
try:
url = f"{base_url}{route}"
print(f"🧪 测试路由: {route} ({name})")
# 发送请求
response = requests.get(url, timeout=10)
# 检查响应状态
if response.status_code == 200:
print(f" ✅ 状态码: {response.status_code}")
# 检查响应内容是否包含HTML
content_type = response.headers.get('Content-Type', '')
if 'text/html' in content_type:
print(f" ✅ 内容类型: {content_type}")
# 检查是否包含导航栏
if 'navbar' in response.text:
print(f" ✅ 导航栏: 存在")
else:
print(f" ⚠️ 导航栏: 缺失")
# 检查页面大小
size_kb = len(response.content) / 1024
print(f" ✅ 页面大小: {size_kb:.1f} KB")
results.append((route, name, "成功", response.status_code))
else:
print(f" ❌ 内容类型错误: {content_type}")
results.append((route, name, "内容类型错误", response.status_code))
else:
print(f" ❌ 状态码错误: {response.status_code}")
results.append((route, name, "状态码错误", response.status_code))
except requests.exceptions.ConnectionError:
print(f" ❌ 连接失败: 服务器未启动")
results.append((route, name, "连接失败", 0))
break
except requests.exceptions.Timeout:
print(f" ❌ 请求超时")
results.append((route, name, "请求超时", 0))
except Exception as e:
print(f" ❌ 未知错误: {str(e)}")
results.append((route, name, f"错误: {str(e)}", 0))
print()
# 打印测试总结
print("=" * 60)
print("📊 测试总结:")
success_count = 0
total_count = len(results)
for route, name, status, code in results:
status_icon = "" if status == "成功" else ""
print(f" {status_icon} {route} ({name}): {status}")
if status == "成功":
success_count += 1
print()
print(f"📈 成功率: {success_count}/{total_count} ({success_count/total_count*100:.1f}%)")
if success_count == total_count:
print("🎉 所有路由测试通过!")
return True
else:
print("⚠️ 部分路由存在问题")
return False
if __name__ == "__main__":
print("TSP助手前端路由测试工具")
print("=" * 60)
# 检查服务器是否运行
base_url = "http://localhost:5000"
# 如果提供了命令行参数使用自定义URL
if len(sys.argv) > 1:
base_url = sys.argv[1]
success = test_page_routes(base_url)
if not success:
print("\n💡 解决建议:")
print("1. 确保Flask服务器已启动: python src/web/app.py")
print("2. 检查端口是否正确: 默认5000")
print("3. 检查防火墙设置")
print("4. 查看服务器日志了解详细错误信息")
sys.exit(0 if success else 1)