import { WebSocket } from 'ws'; const list = await (await fetch('http://127.0.0.1:9222/json/list')).json(); const page = list.find(t => t.type === 'page'); if (!page) { console.log('no page'); process.exit(1); } const ws = new WebSocket(page.webSocketDebuggerUrl); let id = 0; const pend = new Map(); const send = (method, params = {}) => new Promise(res => { const i = ++id; pend.set(i, res); ws.send(JSON.stringify({ id: i, method, params })); }); await new Promise(r => ws.on('open', r)); ws.on('message', d => { const m = JSON.parse(d); if (m.id && pend.has(m.id)) { pend.get(m.id)(m.result); pend.delete(m.id); } }); // 388x844 ≈ 1008/2.6(同比例窄屏) await send('Emulation.setDeviceMetricsOverride', { width: 430, height: 932, deviceScaleFactor: 2, mobile: true }); await send('Page.navigate', { url: 'http://127.0.0.1:5173/' }); await new Promise(r => setTimeout(r, 4000)); const { data } = await send('Page.captureScreenshot', { format: 'png' }); const fs = await import('node:fs'); fs.writeFileSync('/tmp/webui-narrow.png', Buffer.from(data, 'base64')); console.log('已截图 /tmp/webui-narrow.png'); ws.close();