25 lines
1.6 KiB
JavaScript
25 lines
1.6 KiB
JavaScript
import { newTarget, attach, SAN } from '/tmp/cdp3.mjs';
|
|
const wait=ms=>new Promise(z=>setTimeout(z,ms));
|
|
const path='/web/temu/choiceTemuList/offline';
|
|
await newTarget('https://www.dianxiaomi.com'+path);
|
|
await wait(11000);
|
|
const c = await attach('/choiceTemuList/offline');
|
|
if(!c){console.log('attach fail');process.exit(1);}
|
|
const set = await c.evalJS(`(()=>{
|
|
const el=[...document.querySelectorAll('input.ant-input')].filter(e=>e.offsetParent!==null).find(e=>!e.placeholder||e.placeholder===' ');
|
|
if(!el) return 'no-input';
|
|
const setter=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,'value').set;
|
|
setter.call(el,'Hair Clips Set for Women'); el.dispatchEvent(new Event('input',{bubbles:true})); return 'set';})()`);
|
|
console.log('输入:', String(set));
|
|
await wait(700);
|
|
await c.evalJS(`(()=>{const b=[...document.querySelectorAll('button')].find(x=>/^\\s*搜索\\s*$/.test((x.innerText||'').trim()));
|
|
if(b) for(const ev of ['mousedown','mouseup','click']) b.dispatchEvent(new MouseEvent(ev,{bubbles:true,cancelable:true,view:window})); return 1;})()`);
|
|
await wait(9000);
|
|
const o = await c.evalJS(`(()=>{
|
|
const rows=[...document.querySelectorAll('.vxe-body--row')].map(r=>(r.innerText||'').replace(/\\s+/g,' ').trim());
|
|
const body=(document.body.innerText||'').replace(/\\s+/g,' '); const m=body.match(/共\\s*\\d+\\s*条/);
|
|
return JSON.stringify({total:m?m[0]:'', n:rows.length, first:rows.slice(0,3).map(t=>t.slice(0,150))});})()`);
|
|
console.log('待发布搜索:', SAN(String(o)).slice(0,900));
|
|
try{ await c.shot('/tmp/temu_offline.jpg'); console.log('shot ok'); }catch(e){ console.log('shot fail'); }
|
|
process.exit(0);
|