- TikTok/Shopee/速卖通/Walmart 各 46-47 条已在待发布 - Ozon 47 条已建、改价 40/47 - SHEIN 配方跑通第一条;Temu 差「预览图」一步 - 核心产出:MYJ.message.error 钩子诊断法(解开了三个平台的保存静默拦截) - 含下一轮提示词 NEXT-ROUND-PROMPT.md
24 lines
2.1 KiB
JavaScript
24 lines
2.1 KiB
JavaScript
import { attach } from '/tmp/cdp3.mjs';
|
|
const wait = ms => new Promise(z => setTimeout(z, ms));
|
|
const c = await attach('/web/temu/add') || await attach('dianxiaomi.com');
|
|
console.log('url:', await c.evalJS('location.href'));
|
|
const hook = await c.evalJS(`(()=>{window.__cap=[]; let n=0;
|
|
function wrap(obj,name,label){ try{ if(!obj||!obj[name])return; const o=obj[name];
|
|
obj[name]=function(){ try{ window.__cap.push(label+': '+Array.prototype.slice.call(arguments).map(function(a){return typeof a==='string'?a:JSON.stringify(a);}).join(' ').slice(0,200)); }catch(e){}
|
|
return o.apply(obj,arguments); }; n++; }catch(e){} }
|
|
try{ if(window.MYJ&&window.MYJ.message){ ['error','warning','info'].forEach(k=>wrap(window.MYJ.message,k,'MYJ.'+k)); } }catch(e){}
|
|
try{ if(window.antd&&window.antd.message){ ['error','warning','info'].forEach(k=>wrap(window.antd.message,k,'antd.'+k)); } }catch(e){}
|
|
return 'wrapped '+n;})()`);
|
|
console.log('钩子:', String(hook));
|
|
await c.evalJS(`window.scrollTo(0,0)`); await wait(600);
|
|
await c.evalJS(`(()=>{const x=[...document.querySelectorAll('button')].filter(e=>e.offsetParent!==null).find(e=>/^\\s*保存\\s*$/.test((e.innerText||'').trim()));
|
|
if(x) for(const ev of ['mousedown','mouseup','click']) x.dispatchEvent(new MouseEvent(ev,{bubbles:true,cancelable:true,view:window})); return 1;})()`);
|
|
await wait(9000);
|
|
const cap = await c.evalJS(`JSON.stringify(window.__cap||[])`);
|
|
console.log('★ 捕获:', String(cap).slice(0,600));
|
|
const errItems = await c.evalJS(`JSON.stringify([].slice.call(document.querySelectorAll('.ant-form-item-has-error')).map(function(x){var l=x.querySelector('label');return l?(l.innerText||'').replace(/\\s+/g,' ').trim().slice(0,36):'?';}))`);
|
|
console.log('出错字段:', String(errItems).slice(0,300));
|
|
const ex = await c.evalJS(`JSON.stringify([].slice.call(document.querySelectorAll('.ant-form-item-explain-error')).map(e=>{var p=e.closest?e.closest('.ant-form-item'):null;var l=p?(p.querySelector('label')||{}).innerText||'':'';return l.replace(/\\s+/g,' ').trim().slice(0,30)+' → '+(e.innerText||'').trim();}).filter(Boolean))`);
|
|
console.log('行内错误:', String(ex).slice(0,400));
|
|
process.exit(0);
|