Ожидание разрешения ajax после нажатия кнопки - PullRequest
1 голос
/ 04 апреля 2019
await page.click('.save');

const value = await page.$eval('.myelement', el => { return el.innerHTML });

Нажатие кнопки .save запускает запрос ajax, который изменяет значение .myelement s. Как мне ждать этого ответа, прежде чем я $ .eval .myelement?

1 Ответ

1 голос
/ 05 апреля 2019

Вы можете использовать page.waitForNavigation, чтобы дождаться завершения любой сетевой активности при нажатии кнопки, подобной этой:

// waits for navigation and clicks promises to resolve
await Promise.all([
    page.waitForNavigation(), // this promise resolves after navigation has finished
    page.click('.save')
]);

const value = await page.$eval('.myelement', el => { return el.innerHTML });

Вы не должны просто использовать page.waitForNavigation(), так как это можетпривести к состоянию гонки, когда сетевая активность уже завершена до разрешения обещания page.click.

Альтернативы

Если это не работает, вы также можете попробовать один из waitUntilопции для функции, такие как networkidle0 или networkidle2 (например, page.waitForNavigation({ waitUntil: 'networkidle0' }).

. В качестве альтернативы вы можете использовать page.waitForResponse вместо этого, если хотите дождаться определенного сетевого ресурсадля завершения загрузки или есть постоянный фоновый трафик (так что ожидание завершения навигации не является вариантом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...