Puppeteer - situación de desplazamiento infinito

Quería seguir desplazándome hacia abajo, hasta que todos los elementos con un nombre de clase particular se carguen en un entorno HTML dinámico.

Este es el código que utilicé:

while (  (await page.$('.xj7')).length < counter) { 
        await page.evaluate( () => 
            window.scrollBy(0, window.innerHeight));
    }

El problema es que después de cargar todos los elementos, no deja de desplazarse. No sé por qué es eso, ya que debería salir del ciclo while.

Cuando finalizo la aplicación, aparece este error:

(node:5708) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.cal
lFunctionOn): Session closed. Most likely the page has been closed.
    at CDPSession.send (C:\node_modules\pupp
eteer\lib\Connection.js:187:29)
    at ExecutionContext.evaluateHandle (C:\node_modules\puppeteer\lib\ExecutionContext.js:73:75)
    at ExecutionContext.evaluate (C:\node_modules\puppeteer\lib\ExecutionContext.js:46:31)
    at Frame.evaluate (C:\node_modules\puppeteer\lib\FrameManager.js:326:20)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
(node:5708) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This
error originated either by throwing inside of an async function without a catch
block, or by rejecting a promise which was not handled with .catch(). (rejection
 id: 4)
(node:5708) [DEP0018] DeprecationWarning: Unhandled promise rejections are depre
cated. In the future, promise rejections that are not handled will terminate the
 Node.js process with a non-zero exit code.

Como puede ver, menciona el rechazo no prometido de la promesa. ¿Tal vez tenga que ver con la nueva función asincrónica que introduje dentro del ciclo while?

EDIT: decidí probar el valor de la página. $ ('. V1Nh3.kIKUG._bz0w')). Length

Escribí este código de prueba:

while (  (await page.$('.xj7')).length < counter) { 
        const read = (await page.$('.xj7')).length;
        console.log(read);
        await page.evaluate( () => 
            window.scrollBy(0, window.innerHeight));
    }

Los valores aumentaron de 12 a 24, ¡luego se atascaron en 30! Luego, cuando la página ha cargado todos los elementos, el valor cayó a 28!

Por eso se atora a este bucle. No entiendo, mientras que la página tiene cientos de estos elementos, se extendió a estos valores.

Respuestas a la pregunta(0)

Su respuesta a la pregunta