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 q=propsOf(t); if(q&&typeof q.onClick==='function'){q.onClick({target:t,currentTarget:t,stopPropagation(){},preventDefault(){},nativeEvent:{},button:0,detail:1});return true;} t=t.parentElement;} return false; }; let leaf=null; for (const el of document.querySelectorAll('*')) if (el.children.length===0 && (el.textContent||'').trim()==='连接性错误 (176)') { leaf=el; break; } if(!leaf) return {err:'node not found'}; fire(leaf); await sleep(2500); const collect = () => { let best=null; for (const el of document.querySelectorAll('div,table,tbody')) { const x = el.innerText||''; if (/错误对象/.test(x) && /[0-9]连接性错误/.test(x) && (!best || x.length < best.length)) best = x; } return (best||'').split('input::-webkit')[0]; }; const rows = new Map(); const add = (txt) => { const re = /\(([^)]+)\):\s*([A-Za-z0-9_.]+)-/g; let m; while ((m = re.exec(txt))) { const k=m[1]; rows.set(k+'|'+m[2], true); } }; add(collect()); // page through for (let i=0;i<12;i++){ let next=null; for (const b of document.querySelectorAll('li,button,span')) { const t=(b.textContent||'').trim(); if ((t==='>'||t==='下一页'||b.className && /next/i.test(String(b.className))) && b.offsetParent!==null) { next=b; break; } } if(!next) break; if(!fire(next)) break; await sleep(1200); add(collect()); } const byNet = {}; for (const k of rows.keys()) { const n=k.split('|')[0]; byNet[n]=(byNet[n]||0)+1; } return {pads: rows.size, nets: Object.keys(byNet).length, byNet};