nodriver v0.46.1启动后浏览器及程序立即关闭问题求助
问题排查与解决建议
环境与问题概述
- 环境配置:
- nodriver == 0.46.1
- Google Chrome 136.0.7103.113
- 操作系统:Fedora 42
- 问题现象:运行代码启动浏览器后窗口随即关闭,所有网站均存在此情况;使用
uc.loop().run_until_complete()或asyncio.run()执行结果一致,页面未加载程序就结束,仅日志显示临时配置文件被删除,怀疑Chrome 136版本兼容性问题。
排查与解决步骤
1. 验证版本兼容性
Chrome大版本更新常导致自动化工具适配滞后,先确认nodriver是否支持Chrome 136:
- 查看nodriver的release notes,确认当前0.46.1版本是否适配Chrome 136
- 若未适配,可临时降级Chrome到135版本,或等待nodriver推出兼容更新版本
2. 修正代码逻辑,避免程序提前退出
原代码中sleep(2)在事件循环结束后执行,此时浏览器已被销毁,需在异步函数内添加等待逻辑:
import nodriver as uc import asyncio async def main(): browser = await uc.start(headless=False) page = await browser.get('https://dash.cloudflare.com/login') await page.verify_cf() # 添加等待时间,确保页面加载完成且操作执行完毕 await asyncio.sleep(10) await browser.close() if __name__ == '__main__': asyncio.run(main())
事件循环执行完main()后会自动终止,浏览器进程会被清理,所以必须在异步函数内部保留足够的等待时间。
3. 检查系统权限与Chrome依赖
- 手动启动Chrome确认是否能正常运行,排除浏览器自身故障
- 在Fedora终端执行
dnf check google-chrome-stable,检查Chrome依赖库是否完整,若有缺失则安装对应依赖包
4. 临时禁用临时配置文件自动清理
启动浏览器时添加参数保留临时配置文件,排查是否是清理逻辑导致异常:
browser = await uc.start(headless=False, delete_temp_profile=False)
若禁用后浏览器不再关闭,说明可能是临时文件清理逻辑与Fedora系统存在冲突,可后续等待nodriver修复,或手动清理/tmp下的临时配置目录。
5. 开启详细调试日志定位问题
添加日志配置,获取更详细的运行信息:
import logging logging.basicConfig(level=logging.DEBUG) import nodriver as uc import asyncio async def main(): browser = await uc.start(headless=False) page = await browser.get('https://dash.cloudflare.com/login') await page.verify_cf() await asyncio.sleep(10) await browser.close() if __name__ == '__main__': asyncio.run(main())
查看日志中是否有浏览器启动失败、进程异常退出的具体错误信息,进一步定位问题根源。
内容的提问来源于stack exchange,提问作者John Lenon
相关产品推荐
相关产品推荐

