await page.click('.save');
const value = await page.$eval('.myelement', el => { return el.innerHTML });
单击.save
按钮会触发更改.myelement
s值的ajax请求。我如何在$ .eval .myelement
之前等待回复?
单击如下按钮时,您可以使用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
,以防您想要等待特定的网络资源完成加载,或者有持续的后台流量(因此等待导航完成不是一个选项)。