Я хочу автоматизировать удаление своих чатов в чате, потому что у меня около 244 из них, и я не собираюсь делать это вручную. Что я хочу сделать, так это прокручивать вниз до дна, пока не появится чаты, а затем удалить их с последнего до первого. Удаленная часть работает, но у меня есть некоторые проблемы с прокруткой.
await page.evaluate(async () => {
const delay = 10000;
const wait = (ms) => new Promise(res => setTimeout(res, ms));
const sidebar = document.querySelector('#stage-slideover-sidebar');
const count = () => document.querySelectorAll('#history aside a').length;
const scrollDown = async () => {
const lastChild = document.querySelector('#history aside a:last-child');
if (lastChild) {
lastChild.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'end' });
}
}
let preCount = 0;
let postCount = 0;
let attempts = 0;
do {
preCount = count();
await scrollDown();
await wait(delay);
postCount = count();
console.log("preCount", preCount, "postCount", postCount, "attempts", attempts);
if (postCount === preCount) {
attempts++;
} else {
attempts = 0;
}
} while (attempts < 10);
console.log("Reached bottom. Total items:", postCount);
// await wait(delay);
});
< /code>
}
Это работает лучше, чем когда я устанавливаю задержку на 1, 2 или 3 секунды, и попытки 3. Когда я использую это, он прекращается загружать при 84.
Однако проблема, с которой я столкнулся с задержкой на 10 секунд и 10 попыток заключается в том, что я сталкиваюсь с этой ошибкой после того, как все загрузила. #error = new Errors_js_1.ProtocolError();
^
ProtocolError: Runtime.callFunctionOn timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.
at (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:102:14)
at new Callback (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:106:16)
at CallbackRegistry.create (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:24:26)
at Connection._rawSend (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:99:26)
at CdpCDPSession.send (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CdpSession.js:73:33)
at #evaluate
(/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ExecutionContext.js:363:50)
at ExecutionContext.evaluate (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ExecutionContext.js:277:36)
at IsolatedWorld.evaluate (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/IsolatedWorld.js:100:30)
at CdpFrame.evaluate (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Frame.js:364:43)
at CdpFrame. (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:109:27)
Node.js v22.19.0
Я хочу автоматизировать удаление своих чатов в чате, потому что у меня около 244 из них, и я не собираюсь делать это вручную. Что я хочу сделать, так это прокручивать вниз до дна, пока не появится чаты, а затем удалить их с последнего до первого. Удаленная часть работает, но у меня есть некоторые проблемы с прокруткой.[code]await page.evaluate(async () => { const delay = 10000; const wait = (ms) => new Promise(res => setTimeout(res, ms)); const sidebar = document.querySelector('#stage-slideover-sidebar');
let preCount = 0; let postCount = 0; let attempts = 0; do { preCount = count(); await scrollDown(); await wait(delay); postCount = count(); console.log("preCount", preCount, "postCount", postCount, "attempts", attempts); if (postCount === preCount) { attempts++; } else { attempts = 0; } } while (attempts < 10);
console.log("Reached bottom. Total items:", postCount);
// await wait(delay); }); < /code> } Это работает лучше, чем когда я устанавливаю задержку на 1, 2 или 3 секунды, и попытки 3. Когда я использую это, он прекращается загружать при 84. Однако проблема, с которой я столкнулся с задержкой на 10 секунд и 10 попыток заключается в том, что я сталкиваюсь с этой ошибкой после того, как все загрузила. #error = new Errors_js_1.ProtocolError(); ^
ProtocolError: Runtime.callFunctionOn timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed. at (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:102:14) at new Callback (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:106:16) at CallbackRegistry.create (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:24:26) at Connection._rawSend (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:99:26) at CdpCDPSession.send (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CdpSession.js:73:33) at #evaluate (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ExecutionContext.js:363:50) at ExecutionContext.evaluate (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/ExecutionContext.js:277:36) at IsolatedWorld.evaluate (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/IsolatedWorld.js:100:30) at CdpFrame.evaluate (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Frame.js:364:43) at CdpFrame. (/Users/pc/WebstormProjects/puppeteer/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:109:27)
Node.js v22.19.0 [/code] Как лучше всего подходить к этому