如何检测Pyppeteer调用browser.close()后浏览器是否已正常关闭
Pyppeteer检测浏览器是否正常关闭的解决方案
你调用browser.on('disconnected')返回函数对象是正常的,on方法是事件监听器注册接口,作用是给指定事件绑定回调函数,需要传入一个回调函数作为参数,当disconnected事件触发时(也就是浏览器断开连接/关闭时)会自动执行这个回调,它本身不会返回浏览器的连接状态。
两种正确检测方式
方法1:直接查询当前连接状态
直接调用browser.isConnected()方法,该方法会返回布尔值:
- 返回
True:浏览器处于正常连接运行状态 - 返回
False:浏览器已经关闭/断开连接
你在await browser.close()之后调用这个方法,返回False就说明浏览器已经正常关闭。
方法2:监听断开事件提前注册回调
你可以在浏览器实例创建后就注册disconnected事件的回调,当浏览器关闭时会自动触发回调逻辑,适合需要异步感知关闭事件的场景。
修改后的可运行示例代码
import asyncio from pyppeteer import launch async def get_browser(): return await launch({"headless": False}) async def get_page(): browser = await get_browser() # 注册disconnected事件回调,浏览器断开时自动执行 def on_browser_disconnected(): print("浏览器已正常触发断开事件") browser.on('disconnected', on_browser_disconnected) url = 'https://www.wikipedia.org/' page = await browser.newPage() await page.goto(url) content = await page.content() await browser.close() # 直接查询连接状态验证关闭 if not browser.isConnected(): print("验证通过:浏览器已正常关闭") else: print("验证失败:浏览器未正常关闭") return content loop = asyncio.get_event_loop() result = loop.run_until_complete(get_page()) print(result)
内容的提问来源于stack exchange,提问作者MasayoMusic
相关产品推荐
相关产品推荐

