Оператор page.waitForSelector
работает.Проблема вызвана одним из вызовов page.click
.
Соответствующая часть сообщения об ошибке:
(node:14428) UnhandledPromiseRejectionWarning: Error: Node is either not visible or not an HTMLElement
[...]
at Page.click (/Users/asd/Projects/FreeRazor/node_modules/puppeteer/lib/Page.js:988:29)
at /Users/asd/Projects/FreeRazor/app.js:19:16
Таким образом, ошибка возникает в строке 19. Я неЯ точно не знаю, какая это строка, но я предполагаю, что это последний вызов page.click
, поскольку вы говорите, что код работает, если вы дольше ждете (page.waitFor(5000)
).Таким образом, кажется, что страница отображает элемент #passwordNext > content
DOM дольше, чем элемент #password
.
Решение
Вы можете решить эту проблему, поставив еще один waitForSelector
перед щелчкомчтобы убедиться, что элемент действительно существует.Я даже добавил опцию { visible: true }
, чтобы убедиться, что узел DOM также виден:
await page.waitForSelector('#passwordNext > content', { visible: true });
await page.click('#passwordNext > content');