| 12345678910111213141516171819202122232425262728293031323334353637 |
- #!/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)
|