javascript - 单击按钮后等待ajax请求解决
问题描述
await page.click('.save');
const value = await page.$eval('.myelement', el => { return el.innerHTML });
单击.save
Button 会触发更改.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
如果您想等待特定网络资源完成加载或存在持续的后台流量(因此等待导航完成不是一个选项),您可以使用。
推荐阅读
- javascript - 获取文件名并保存在var中
- mysql - 从具有最高修订 ID 值的表中获取行数据
- asp.net - .NET Core 2.1 中的更新迁移
- html - DIV css 背景图像不会在 IE 8 中显示
- xml - XPath 根据多个条件选择 XML 节点的值
- bash - 如果文件 ~/.bashrc 不存在,我如何在 Google Colab 上安装 Torch?
- c++ - 如何通过模板传递函数?
- python - PyCuda mem_alloc 初始化错误
- java - Java GUI,显示闪烁的字符串
- firefox - Firefox Page Inspector API 到 Max/msp