// 选中命中诊断: node scripts/debug-hit.mjs import puppeteer from 'puppeteer-core' const EDGE = 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe' const token = process.argv[2] if (!token) { console.error('缺少 token'); process.exit(1) } const browser = await puppeteer.launch({ executablePath: EDGE, headless: 'new', args: ['--window-size=1440,900', '--enable-unsafe-swiftshader', '--use-gl=angle', '--use-angle=swiftshader'], defaultViewport: { width: 1440, height: 900 }, }) const page = await browser.newPage() await page.goto(`http://localhost:8000/combine?token=${encodeURIComponent(token)}`, { waitUntil: 'networkidle2' }) await page.waitForSelector('.lib-item') await page.click('.lib-item') await new Promise(r => setTimeout(r, 600)) const box = await (await page.$('.canvas-box')).boundingBox() const cx = box.x + box.width / 2, cy = box.y + box.height / 2 // 用画布暴露的调试钩子命中测试 const dbg = await page.evaluate((x, y) => window.__ccDebug.debugHit(x, y), cx, cy) console.log('debugHit:', JSON.stringify(dbg)) const sel = await page.evaluate(() => window.__ccDebug.getSelected()) console.log('选中 uid:', sel) // 实际点击后再读选中 await page.mouse.click(cx, cy) await new Promise(r => setTimeout(r, 300)) const sel2 = await page.evaluate(() => window.__ccDebug.getSelected()) console.log('点击后选中 uid:', sel2) await browser.close()