await page.click('.save');
const value = await page.$eval('.myelement', el => { return el.innerHTML });
单击.save
按钮会触发一个更改.myelement
值的ajax请求。在$ .eval .myelement
之前,我该如何等待该响应?
答案 0 :(得分:1)
单击这样的按钮时,您可以使用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
。