puppeteer: как сделать паузу перед следующей линией?

Вопрос: в pupeteer я хотел бы подождать определенное время, прежде чем перейти к следующему Я попытался поместить setTimeout в функцию оценки, но, похоже, это просто игнорируется console.log('before waiting'); await page.evaluate(async() => { setTimeout(function(){ console.log('waiting'); }, 4000) }); console.log('after waiting'); Этот код не дожидается и просто пишет перед ожиданием и после ожидания Вы знаете, как это

Вопрос:

в 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) });

Оцените статью
Добавить комментарий