54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
const CDP_URL = 'ws://127.0.0.1:62529/devtools/browser/a36c1b63-8ff4-41d5-93fa-5c228657ef70';
|
|
const ZIP_FILE = 'c:\\Users\\Zhang\\Documents\\Halo\\WarmIsland\\dist\\warm-island-1.0.0.zip';
|
|
|
|
async function main() {
|
|
const ws = new WebSocket(CDP_URL);
|
|
let msgId = 1;
|
|
const pending = new Map();
|
|
|
|
ws.addEventListener('message', (event) => {
|
|
const msg = JSON.parse(event.data);
|
|
if (msg.id && pending.has(msg.id)) {
|
|
const { resolve, reject } = pending.get(msg.id);
|
|
pending.delete(msg.id);
|
|
if (msg.error) reject(msg.error);
|
|
else resolve(msg.result);
|
|
}
|
|
});
|
|
|
|
const send = (method, params = {}, sessionId) => new Promise((resolve, reject) => {
|
|
const id = msgId++;
|
|
const msg = { id, method, params };
|
|
if (sessionId) msg.sessionId = sessionId;
|
|
pending.set(id, { resolve, reject });
|
|
ws.send(JSON.stringify(msg));
|
|
});
|
|
|
|
await new Promise(r => ws.addEventListener('open', r, { once: true }));
|
|
|
|
try {
|
|
const { targetInfos } = await send('Target.getTargets');
|
|
const pageTarget = targetInfos.find(t => t.type === 'page' && t.url.includes('localhost:8090'));
|
|
if (!pageTarget) { console.error('No page target found'); process.exit(1); }
|
|
|
|
const { sessionId } = await send('Target.attachToTarget', { targetId: pageTarget.targetId, flatten: true });
|
|
|
|
const doc = await send('DOM.getDocument', {}, sessionId);
|
|
const { nodeId } = await send('DOM.querySelector', { nodeId: doc.root.nodeId, selector: 'input[type="file"][accept=".zip"]' }, sessionId);
|
|
|
|
if (!nodeId) { console.error('File input not found'); process.exit(1); }
|
|
console.log('Found file input node:', nodeId);
|
|
|
|
await send('DOM.setFileInputFiles', { nodeId, files: [ZIP_FILE] }, sessionId);
|
|
console.log('File upload triggered successfully!');
|
|
|
|
ws.close();
|
|
} catch (err) {
|
|
console.error('Error:', JSON.stringify(err));
|
|
ws.close();
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
main();
|