131 lines
4.7 KiB
Python
131 lines
4.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
快速测试修复
|
|
"""
|
|
|
|
from playwright.sync_api import sync_playwright
|
|
import time
|
|
|
|
def quick_test():
|
|
"""快速测试修复"""
|
|
print("🔧 快速测试修复")
|
|
print("=" * 50)
|
|
|
|
url = "http://129.211.173.87:8895/games/tetris/index.html"
|
|
print(f"🌐 测试URL: {url}")
|
|
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True)
|
|
|
|
context = browser.new_context(
|
|
viewport={"width": 1280, "height": 720},
|
|
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
|
|
)
|
|
|
|
page = context.new_page()
|
|
|
|
try:
|
|
# 加载页面
|
|
print("📡 加载页面...")
|
|
page.goto(url, wait_until="networkidle", timeout=10000)
|
|
print("✅ 页面加载成功")
|
|
|
|
time.sleep(2)
|
|
|
|
# 收集日志
|
|
logs = []
|
|
page.on("console", lambda msg: logs.append({
|
|
"type": msg.type,
|
|
"text": msg.text
|
|
}))
|
|
|
|
# 点击开始按钮
|
|
print("🔘 点击开始按钮...")
|
|
start_btn = page.query_selector("#start-btn")
|
|
if start_btn:
|
|
start_btn.click(timeout=3000)
|
|
print("✅ 开始按钮点击成功")
|
|
else:
|
|
print("❌ 未找到开始按钮")
|
|
return
|
|
|
|
# 等待游戏运行
|
|
print("⏳ 等待游戏运行10秒...")
|
|
time.sleep(10)
|
|
|
|
# 分析日志
|
|
print("\n📊 日志分析:")
|
|
|
|
spawn_logs = [log for log in logs if "生成新方块" in log["text"]]
|
|
move_logs = [log for log in logs if "移动方块" in log["text"]]
|
|
error_logs = [log for log in logs if log["type"] == "error"]
|
|
nan_logs = [log for log in logs if "NaN" in log["text"] or "undefined" in log["text"]]
|
|
|
|
print(f" 总日志数: {len(logs)}")
|
|
print(f" 方块生成日志: {len(spawn_logs)}")
|
|
print(f" 方块移动日志: {len(move_logs)}")
|
|
print(f" 错误日志: {len(error_logs)}")
|
|
print(f" NaN/undefined日志: {len(nan_logs)}")
|
|
|
|
# 显示关键日志
|
|
if spawn_logs:
|
|
print(f"\n🧱 方块生成记录:")
|
|
for i, log in enumerate(spawn_logs[-5:]):
|
|
print(f" {i+1}. {log['text']}")
|
|
|
|
if move_logs:
|
|
print(f"\n🚀 方块移动记录:")
|
|
valid_moves = [log for log in move_logs if "移动方块到:" in log["text"]]
|
|
for i, log in enumerate(valid_moves[-5:]):
|
|
print(f" {i+1}. {log['text']}")
|
|
|
|
if error_logs:
|
|
print(f"\n❌ 错误记录:")
|
|
for i, log in enumerate(error_logs):
|
|
print(f" {i+1}. {log['text']}")
|
|
|
|
if nan_logs:
|
|
print(f"\n⚠️ NaN/undefined问题:")
|
|
for i, log in enumerate(nan_logs):
|
|
print(f" {i+1}. {log['text']}")
|
|
|
|
# 评估修复
|
|
print("\n📈 修复评估:")
|
|
|
|
if len(nan_logs) == 0:
|
|
print(" ✅ NaN/undefined问题已修复!")
|
|
else:
|
|
print(f" ❌ 仍有{len(nan_logs)}个NaN/undefined问题")
|
|
|
|
if len(spawn_logs) > 0:
|
|
# 检查位置是否正确
|
|
correct_positions = 0
|
|
for log in spawn_logs:
|
|
if "位置: (" in log["text"] and "undefined" not in log["text"]:
|
|
correct_positions += 1
|
|
|
|
print(f" ✅ 方块生成正常 ({len(spawn_logs)}次)")
|
|
print(f" 📍 正确位置: {correct_positions}/{len(spawn_logs)}")
|
|
else:
|
|
print(" ❌ 方块未生成")
|
|
|
|
if len(move_logs) > 0:
|
|
valid_moves_count = len([log for log in move_logs if "NaN" not in log["text"]])
|
|
print(f" ✅ 方块移动正常 ({valid_moves_count}次有效移动)")
|
|
else:
|
|
print(" ❌ 方块未移动")
|
|
|
|
# 截图
|
|
screenshot_path = "/tmp/quick_test_fix.png"
|
|
page.screenshot(path=screenshot_path, full_page=True)
|
|
print(f"\n📸 截图保存: {screenshot_path}")
|
|
|
|
finally:
|
|
page.close()
|
|
context.close()
|
|
browser.close()
|
|
|
|
print("\n✅ 快速测试完成!")
|
|
|
|
if __name__ == "__main__":
|
|
quick_test() |