#!/usr/bin/env python3 # 浏览器走查: 登录 → 5 页(dashboard/recordings/logs/reports/pipeline) → 0 pageerror/console.error 断言 # 环境变量: PLAYWRIGHT_BASE_URL(默认 https://recording.sh-lami.com)、SMARTBADGE_USERNAME/PASSWORD(默认 lami123456) import asyncio import os from playwright.async_api import async_playwright BASE = os.environ.get('PLAYWRIGHT_BASE_URL', 'https://recording.sh-lami.com/') USER = os.environ.get('SMARTBADGE_USERNAME', 'lami123456') PASS = os.environ.get('SMARTBADGE_PASSWORD', 'lami123456') errors = [] async def main(): async with async_playwright() as p: browser = await p.chromium.launch() page = await browser.new_page() page.on('pageerror', lambda e: errors.append(f'PAGEERROR: {e}')) page.on('console', lambda m: errors.append(f'CONSOLE[{m.type}]: {m.text}') if m.type in ('error', 'warning') else None) await page.goto(BASE + 'login', wait_until='networkidle') await page.fill('input >> nth=0', USER) await page.fill('input >> nth=1', PASS) await page.click('button:has-text("登录"), button:has-text("登 录")') await page.wait_for_timeout(3000) await page.goto(BASE + 'dashboard', wait_until='networkidle') await page.wait_for_timeout(4000) print('dashboard url:', page.url, 'title:', await page.title()) for path in ['recordings', 'logs', 'reports', 'pipeline']: await page.goto(BASE + path, wait_until='networkidle') await page.wait_for_timeout(4000) print(path, 'rows:', await page.locator('table tbody tr, .ui-table tbody tr, [role="row"]').count()) await browser.close() asyncio.run(main()) print('--- 错误捕获 ---') print('\n'.join(errors) if errors else '0 errors') raise SystemExit(1 if errors else 0)