pyppeteer中是否存在与page.waitForTimeout()功能等效的实现方法?
解决方法
pyppeteer本身就内置了非阻塞的等待方法,完全可以替代阻塞的time.sleep(),不需要多线程支持。
你可以直接调用页面对象的waitFor()方法,传入需要等待的毫秒数即可,功能和puppeteer的page.waitForTimeout()完全一致,属于异步非阻塞等待,只会暂停当前页面的后续操作逻辑,不会影响其他页面的正常运行。
示例代码
import asyncio from pyppeteer import launch async def main(): browser = await launch() # 同时打开两个测试页面 page1 = await browser.newPage() page2 = await browser.newPage() async def handle_page1(): await page1.goto('https://example.com') # 仅暂停page1的后续操作2秒,不影响page2运行 await page1.waitFor(2000) print('page1 2秒等待完成,执行后续操作') async def handle_page2(): await page2.goto('https://example.org') print('page2 正常执行,不受page1等待影响') await asyncio.gather(handle_page1(), handle_page2()) await browser.close() asyncio.run(main())
补充说明
waitFor()的入参单位是毫秒,2秒对应传入2000即可- 如果你使用的是较新版本的pyppeteer,也可以直接调用
page.waitForTimeout(),该方法已经做了API兼容,和puppeteer的同名方法功能完全一致
内容的提问来源于stack exchange,提问作者varjoll
相关产品推荐
相关产品推荐

