Вопрос:
в pupeteer я хотел бы подождать определенное время, прежде чем перейти к следующему
Я попытался поместить setTimeout в функцию оценки, но, похоже, это просто игнорируется
console.log(‘before waiting’); await page.evaluate(async() => { setTimeout(function(){ console.log(‘waiting’); }, 4000) }); console.log(‘after waiting’);
Этот код не дожидается и просто пишет перед ожиданием и после ожидания
Вы знаете, как это сделать?
Лучший ответ:
Вы можете использовать небольшую функцию обещания,
function delay(time) { return new Promise(function(resolve) { setTimeout(resolve, time) }); }
Затем назовите его, когда вам нужна задержка.
console.log(‘before waiting’); await delay(4000); console.log(‘after waiting’);
Если вы должны использовать кукольник, используйте встроенную функцию waitFor.
await page.waitFor(4000)
Если вы все еще хотите использовать page.evaluate, разрешите его через 4 секунды. Вы ничего не решаете.
await page.evaluate(async() => { await new Promise(function(resolve) { setTimeout(resolve, 1000) }); });
Но я думаю, вы можете просто использовать первые два примера.
Ответ №1
Ваш синтаксис не завершен.
Попробуй это…
await page.evaluate(async() => { setTimeout(function(){ console.log(‘waiting’); }, 4000) });