puppeteer怎么设置等待时间?

2023年1月30日

这个问题是puppeteer怎么等到某个元素出现在页面中才执行程序?中遇到的需求,那篇文章没有描述细节。

这个问题出现的场景是想要等网页的某个元素出现后再执行程序,搜索puppeteer: wait N seconds before continuing to the next line后发现有两种方式:

  await page.waitFor()
  await page.waitForTimeout()

但答案中发现两个都已经过时了:

通过我自己测试发现waitFor已经不能用了,而且我在puppeteer中文文档里也没有找到:

而waitForTimeout能用但vscode中用删除线显示了,那就说明是过时了的:

于是我去查询我常用的puppeteer的中文文档,上面显示版本为19.6.2,但没有找到waitForTimeout:

于是我又找到一个puppeteer官方的英文文档,版本也是19.6.2,但搜索到了waitForTimeout,上面显示过时了:

不仅如此官方文档还提供了取代方案(上面的答案中也提到了):

await new Promise(r => setTimeout(r, 1000));

还可以封装成函数来方便使用,注意使用时前面要加await:

function delay(time) {
   return new Promise(function(resolve) { 
       setTimeout(resolve, time)
   });
}

await delay(4000);

好的现在程序的问题解决了,但我感到有点悲哀,这样简单的一个问题我辗转搜索测试花费了很长时间。

主要存在的问题有:

  1. 没有一开始从stackoverflow里搜索,而是百度搜索。但搜索结果大部分都是stackoverflow翻译过来的,而且回答的结构也改变了。

  1. 一直学习查看的是中文文档。当我没有找到waitForTimeout时我感到很困惑,于是思考是版本问题吗,结果发现就是最新版,然后我想着找找其他的文档再搜索,后来我找到官方的文档搜到了waitForTimeout,还包含了过时的解决方案。但也不能就否认中文文档,毕竟中文更容易理解查阅和学习,其问题就是没有包含对过时内容的说明。可以和官方文档相辅相成。

  1. stackoverflow的回答具有时效性。当时我是直接从上往下看回答的,而回答是Highest score (default)的,所以一开始就看的是过时的内容,浪费了很多时间,同时我事后按最新发布的来看还发现了一篇介绍puppeteer常见使用问题的文章,可以尽早看看。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值