Кукольник - бесконечная прокрутка ситуации - PullRequest
0 голосов
/ 06 июня 2018

Я хотел продолжать прокрутку вниз, пока все элементы с определенным именем класса не загрузятся в динамическую среду HTML.

Это код, который я использовал:

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

Проблемаявляется то, что после загрузки всех элементов, он не прекращает прокрутку.Я не знаю, почему это так, поскольку он должен выйти из цикла while.

Когда я завершаю приложение, я получаю эту ошибку:

(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.

Как вы можете видеть, он упоминает необработанныеобещание отклонения.Может быть, это связано с новой асинхронной функцией, которую я ввел в цикл while?

РЕДАКТИРОВАТЬ: Я решил проверить значение page.$$('.v1Nh3.kIKUG._bz0w')).length

Я написал этот тестовый код:

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

Значения увеличились с 12 до 24, затем они застряли на 30!Затем, когда страница загрузила все элементы, значение упало до 28!

Вот почему оно застряло в этом цикле.Я не понимаю, хотя на странице есть сотни этих элементов, она варьировалась до этих значений.

...