Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮后等待解决ajax请求_Javascript_Node.js_Web Scraping_Puppeteer - Fatal编程技术网

Javascript 单击按钮后等待解决ajax请求

Javascript 单击按钮后等待解决ajax请求,javascript,node.js,web-scraping,puppeteer,Javascript,Node.js,Web Scraping,Puppeteer,单击.save按钮触发一个ajax请求,该请求更改.myelement的值。我如何在I$.eval.myelement之前等待该响应?单击以下按钮时,您可以使用它来等待任何网络活动完成: //等待导航并单击以解决问题 等待承诺([ page.waitForNavigation(),//此承诺在导航完成后解析 页面。单击(“.save”) ]); const value=wait page.$eval('.myelement',el=>{return el.innerHTML}); 您不应该简单

单击
.save
按钮触发一个ajax请求,该请求更改
.myelement
的值。我如何在I$.eval
.myelement
之前等待该响应?

单击以下按钮时,您可以使用它来等待任何网络活动完成:

//等待导航并单击以解决问题
等待承诺([
page.waitForNavigation(),//此承诺在导航完成后解析
页面。单击(“.save”)
]);
const value=wait page.$eval('.myelement',el=>{return el.innerHTML});
您不应该简单地使用
page.waitForNavigation()
,因为这可能会导致竞态条件,此时网络活动在
页面之前已经完成。单击
承诺解决

选择 如果不起作用,您也可以尝试函数的
waitUntil
选项之一,如
networkidle0
networkidle2
(例如
page.waitForNavigation({waitUntil:'networkidle0'})


或者,如果您想等待特定的网络资源完成加载,或者存在持续的后台流量(因此,等待导航完成不是一个选项),您可以改为使用。

您可以尝试。这会导致超时。page.waitFor(2000)是一个邪恶的黑客,但它是有效的。也许这里有一个种族条件。在托马斯·多多夫的答案中看到可能的解决方案。
await page.click('.save');

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