84 lines
2.7 KiB
Python
84 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
测试新的PlayCanvas版俄罗斯方块
|
|
"""
|
|
|
|
from playwright.sync_api import sync_playwright
|
|
import time
|
|
|
|
def test_playcanvas_tetris():
|
|
print("🎮 测试 PlayCanvas版俄罗斯方块")
|
|
print("=" * 60)
|
|
|
|
url = "http://129.211.173.87:8895/games/tetris/"
|
|
|
|
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)"
|
|
)
|
|
page = context.new_page()
|
|
|
|
# 收集日志
|
|
logs = []
|
|
page.on("console", lambda msg: logs.append({"type": msg.type, "text": msg.text}))
|
|
|
|
try:
|
|
print("📡 加载页面...")
|
|
page.goto(url, wait_until="networkidle", timeout=15000)
|
|
time.sleep(3)
|
|
|
|
# 检查PlayCanvas加载
|
|
playcanvas_logs = [l for l in logs if "PlayCanvas" in l["text"]]
|
|
print(f"✅ PlayCanvas日志: {len(playcanvas_logs)}条")
|
|
for log in playcanvas_logs[:3]:
|
|
print(f" {log['text']}")
|
|
|
|
# 点击开始
|
|
print("\n🔘 点击开始游戏...")
|
|
start_btn = page.query_selector("text=开始游戏")
|
|
if start_btn:
|
|
start_btn.click()
|
|
print("✅ 开始按钮点击成功")
|
|
else:
|
|
print("❌ 未找到开始按钮")
|
|
return
|
|
|
|
# 等待游戏运行
|
|
print("⏳ 等待游戏运行5秒...")
|
|
time.sleep(5)
|
|
|
|
# 测试键盘控制
|
|
print("\n⌨️ 测试键盘控制...")
|
|
page.keyboard.press("ArrowLeft")
|
|
time.sleep(0.5)
|
|
page.keyboard.press("ArrowRight")
|
|
time.sleep(0.5)
|
|
page.keyboard.press("ArrowUp")
|
|
time.sleep(0.5)
|
|
|
|
# 分析日志
|
|
print("\n📊 日志分析:")
|
|
errors = [l for l in logs if l["type"] == "error"]
|
|
print(f" 错误数: {len(errors)}")
|
|
|
|
if errors:
|
|
print(" ❌ 错误日志:")
|
|
for err in errors[:5]:
|
|
print(f" {err['text'][:100]}")
|
|
else:
|
|
print(" ✅ 无JavaScript错误")
|
|
|
|
# 截图
|
|
page.screenshot(path="/tmp/playcanvas_tetris_test.png")
|
|
print("\n📸 截图保存: /tmp/playcanvas_tetris_test.png")
|
|
|
|
print("\n✅ 测试完成!")
|
|
|
|
finally:
|
|
browser.close()
|
|
|
|
if __name__ == "__main__":
|
|
test_playcanvas_tetris()
|