const sleep = ms => new Promise(r=>setTimeout(r,ms)); let b=null; for (const x of document.querySelectorAll('button')) if((x.innerText||'').trim()==='运行' && x.offsetParent!==null) b=x; if(!b) return {err:'no 运行'}; const r = b.getBoundingClientRect(); const cx = r.left + r.width/2, cy = r.top + r.height/2; const opt = {bubbles:true, cancelable:true, clientX:cx, clientY:cy, view:window, button:0}; b.dispatchEvent(new PointerEvent('pointerdown', opt)); b.dispatchEvent(new MouseEvent('mousedown', opt)); b.dispatchEvent(new PointerEvent('pointerup', opt)); b.dispatchEvent(new MouseEvent('mouseup', opt)); b.dispatchEvent(new MouseEvent('click', opt)); const log=[]; for (let i=0;i<10;i++){ await sleep(3000); const v=(await eda.pcb_PrimitiveVia.getAll()).length; const l=(await eda.pcb_PrimitiveLine.getAll()).length; const mods=[]; for (const m of document.querySelectorAll('[class*="modal"],[class*="Modal"]')) { const t=(m.innerText||'').trim().replace(/\s+/g,' '); if(t && t.length<160 && m.offsetParent!==null) mods.push(t); } log.push({i, v, l, mods:[...new Set(mods)].slice(0,3)}); if (l>575) break; } return {log};