import puppeteer from 'puppeteer-core' const CHROME='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' const b=await puppeteer.launch({executablePath:CHROME,headless:'new',args:['--no-sandbox','--use-gl=swiftshader','--enable-unsafe-swiftshader','--window-size=1400,900']}) try{ const p=await b.newPage() await p.setViewport({width:1400,height:900}) const errs=[] p.on('pageerror',e=>errs.push('PAGEERR: '+e.message)) await p.goto('http://localhost:5173/',{waitUntil:'networkidle2',timeout:30000}) await new Promise(r=>setTimeout(r,2500)) const r=await p.evaluate(()=>({ groupTitles: [...document.querySelectorAll('.group-head')].map(e=>e.textContent.trim()), hasDirectionModule: [...document.querySelectorAll('.group-head')].some(e=>e.textContent.includes('方向')), shapeHasAngle: (()=>{const g=[...document.querySelectorAll('.group')].find(x=>x.querySelector('.group-head')?.textContent.includes('发射器形状'));const t=g?.querySelector('.group-body')?.textContent||'';return t.includes('角度°')&&t.includes('扩散°')})(), emitHasBur: (()=>{const g=[...document.querySelectorAll('.group')].find(x=>x.querySelector('.group-head')?.textContent.includes('发射模式'));const t=g?.querySelector('.group-body')?.textContent||'';return t.includes('爆发')&&t.includes('持续')})(), })) // 点一下"发射器形状"折叠 await p.evaluate(()=>{const h=[...document.querySelectorAll('.group-head')].find(e=>e.textContent.includes('发射器形状'));h?.click()}) await new Promise(r=>setTimeout(r,300)) const collapsed=await p.evaluate(()=>{const g=[...document.querySelectorAll('.group')].find(x=>x.querySelector('.group-head')?.textContent.includes('发射器形状'));return {caret:g?.querySelector('.caret')?.textContent, visible: g? g.querySelector('.group-body')?.offsetParent ? true : false : '?'}}) await p.screenshot({path:'/tmp/panel-new.png'}) console.log('=== 分组标题 ===') console.log(JSON.stringify(r.groupTitles,null,2)) console.log('方向独立模块?', r.hasDirectionModule) console.log('形状组含角度/扩散?', r.shapeHasAngle) console.log('发射模式组含持续/爆发?', r.emitHasBur) console.log('折叠后:', JSON.stringify(collapsed)) console.log('=== 错误 ===') console.log(errs.join('\n')||'(无)') }finally{await b.close()}