Marionetista - situação de rolagem infinita

Eu queria continuar rolando para baixo, até que todos os elementos com um nome de classe específico sejam carregados em um ambiente HTML dinâmico.

Este é o código que eu usei:

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

O problema é que, depois de carregar todos os elementos, ele não para de rolar. Não sei por que é isso, pois deve sair do loop while.

Quando encerro o aplicativo, recebo este erro:

(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 você pode ver, ele menciona rejeição de promessa sem tratamento. Talvez isso tenha a ver com a nova função assíncrona que introduzi dentro do loop while?

EDIT: Decidi testar o valor da página. $ ('. V1Nh3.kIKUG._bz0w')). Length

Eu escrevi este código de teste:

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

Os valores aumentaram de 12 para 24, depois ficaram presos aos 30! Então, quando a página carregou todos os elementos, o valor caiu para 28!

É por isso que atrapalha esse loop. Eu não entendo enquanto a página tem centenas desses elementos, ela variou para esses valores.

questionAnswers(0)

yourAnswerToTheQuestion