在puppeteer中我想在进入下一行代码之前等待一段确定的时间.
我试图将一个setTimeout放在一个evaluate函数中,但似乎只是被忽略了
console.log('before waiting'); await page.evaluate(async() => { setTimeout(function(){ console.log('waiting'); },4000) }); console.log('after waiting');
此代码不等待,只是在等待之前和等待之后写入
你知道怎么做吗?
解决方法
你可以使用一点承诺功能,
function delay(time) { return new Promise(function(resolve) { setTimeout(resolve,time) }); }
然后,只要你想要延迟,就打电话给它.
console.log('before waiting'); await delay(4000); console.log('after waiting');
如果你必须使用puppeteer使用内置的waitFor函数.
await page.waitFor(4000)
如果您仍想使用page.evaluate,请在4秒后解决.你没有解决任何问题.
await page.evaluate(async() => { await new Promise(function(resolve) { setTimeout(resolve,1000) }); });
但我想你可以简单地使用前两个例子.