You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:12:20