Кукловод: waitForFunction иногда никогда не разрешается - PullRequest
0 голосов
/ 21 января 2019

У меня есть простой сценарий Puppeteer:

await page.goto(MY_URL, {waitUntil: 'load'});
const html = await page.evaluate(() => document.body.innerHTML);

Затем я проверяю, содержит ли html некоторые ключевые строки, и эта часть всегда проходит (я упоминал в случае, если это может каким-либо образом повлиять на дальнейший процесс).После этого я жду, пока в объект window будет включена функция.

await page.waitForFunction(() => 'myFunction' in window);

Эта функция написана внизу скрипта, прикрепленного в <head> тегом <script> страницы..
В основном waitForFunction разрешается так, как должно, но иногда это не так.
И когда я передаю {timeout: 0}, оно будет ждать вечно и никогда не разрешится.Также кажется, что это происходит только в режиме без головы.

Что может быть причиной такого поведения?Как преодолеть или устранить эту проблему?

1 Ответ

0 голосов
/ 21 января 2019

Кажется, что файлы JavaScript иногда не загружались. Решение для меня было:

await page.goto(MY_URL, {waitUntil: 'networkidle2'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...