В основной функции мы определим, когда выйти:
(async () => {
// ...
let finishTime = new Date().getTime() + (5 * 60 * 1000);
await autoScroll(page, finishTime);
// ...
})();
И затем передадим это в page.evaluate
:
async function autoScroll(page, finishTime){
await page.evaluate(async (finishTime) => {
await new Promise((resolve, reject) => {
var totalHeight = 0;
var distance = 100;
var timer = setInterval(() => {
var scrollHeight = document.body.scrollHeight;
window.scrollBy(0, distance);
totalHeight += distance;
if(totalHeight >= scrollHeight || new Date().getTime() > finishTime){
clearInterval(timer);
resolve();
}
}, 120);
});
}, finishTime);
}