You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Puppeteer的waitForFunction函数未按预期工作的问题求助

Puppeteer的waitForFunction函数未按预期工作的问题求助

大家好,我现在在用Node和Puppeteer做自动化操作,遇到了个棘手的问题,希望能得到各位的帮助!

我有一个页面元素,点击它之后文本会变成"Generating",直到后台下载完成,文本才会切换成其他内容。我需要实现两个轮询步骤:

  • 第一步:验证这个元素的文本确实切换成了"Generating",确保操作触发成功
  • 第二步:持续轮询直到"Generating"文本消失,以此判断下载完成,好继续后续操作

我试了好几种方法,但都没达到预期效果。不过奇怪的是,这些方法单独拿出来在浏览器控制台里测试都是有效的,比如直接用document相关的代码能正常判断文本内容。

下面是我尝试过的几种代码片段(为了简洁,第二步的反向判断代码就不贴了,本质逻辑和第一步类似):

第一种尝试,直接用document.querySelector的表达式:

await page.waitForFunction('document.querySelector(#rptCol3A1Lnk0_txt).innerText.includes("Generating")')

之后我尝试用$eval的方式,作为Node和Promise的新手,我试了各种await和return的组合:

await page.waitForFunction((frame) => frame.$eval("#rptCol3A1Lnk0_txt", el => el.textContent.includes("Generating")),
{timeout: 5000, polling: 300}, frame)
await page.waitForFunction(async (frame) => {
    return await frame.$eval("#rptCol3A1Lnk0_txt", el => el.textContent.includes("Generating"))
},
{timeout: 5000, polling: 300}, frame)
await page.waitForFunction(async (frame) => {
    return frame.$eval("#rptCol3A1Lnk0_txt", el => el.textContent.includes("Generating"))
},
{timeout: 5000, polling: 300}, frame)

Puppeteer官方文档里关于waitForFunction的说明对我帮助不大,实在不知道问题出在哪了,有没有大佬能指点一下?

备注:内容来源于stack exchange,提问作者reallomate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:00:31