const sleep = ms => new Promise(r => setTimeout(r, ms)); const propsOf = el => { for (const k of Object.keys(el)) if (k.startsWith('__reactProps$')) return el[k]; return null; }; const fire = (el) => { let t = el; for (let i = 0; i < 8 && t; i++) { const p = propsOf(t); if (p && typeof p.onClick === 'function') { p.onClick({target: t, currentTarget: t, stopPropagation(){}, preventDefault(){}, nativeEvent:{}, button:0, detail:1}); return true; } t = t.parentElement; } if (typeof el.click === 'function') { el.click(); return 'native'; } return false; }; const leaf = (txt) => { for (const el of document.querySelectorAll('*')) if (el.children.length === 0 && (el.textContent || '').trim() === txt) return el; return null; }; await eda.dmt_EditorControl.openDocument('7e9415a16a909c51'); await sleep(1500); const out = {}; const tools = leaf('工具'); if (!tools) return {err: '找不到 工具 菜单'}; out.toolsFired = fire(tools); await sleep(700); const mgr = leaf('铺铜管理器...'); if (!mgr) { out.err = '菜单里没有 铺铜管理器...'; out.items = [...document.querySelectorAll('*')].filter(e=>e.children.length===0).map(e=>(e.textContent||'').trim()).filter(t=>t&&t.length<20).slice(0,200); return out; } out.mgrFired = fire(mgr); await sleep(2000); // 抓对话框里的按钮 / 文本 const btns = []; for (const b of document.querySelectorAll('button')) { const t = (b.innerText || '').trim(); if (t) btns.push(t); } out.buttons = btns; // 找可能的对话框容器 let dlg = null; for (const el of document.querySelectorAll('div')) { const x = el.innerText || ''; if (/铺铜/.test(x) && x.length < 3000 && (!dlg || x.length < dlg.length)) dlg = x; } out.dialog = dlg ? dlg.split('\n').slice(0, 60) : null; return out;