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
相关产品推荐
相关产品推荐

