Как уже упоминалось в комментариях, первая проблема здесь заключается в том, что эта часть кода выполняется в среде NodeJS:
async function loopScroll(page) {
await page.evaluate(/* page environment */);
}
и там, где определено loopScroll
, среда страниц не имеет доступак этой функции.Вот почему вызов loopScroll
не удался и завершает исключение.
Поскольку вы уже используете async
/ await
, вам вообще не нужно использовать рекурсию, просто await
цикл:
await page.evaluate(async () => {
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
let scrollHeight = document.body.scrollHeight;
let currentHeight = 0;
let distance = 100;
while(true) {
let rand = Math.round(Math.random() * (3000 - 500)) + 500;
window.scrollBy(0, distance);
currentHeight += distance;
if (currentHeight >= scrollHeight) {
break;
}
await delay(rand);
}
});