使用nodriver 0.37时遇'NoneType'无'closed'属性错误求助
解决nodriver 0.37版本启动时的AttributeError问题
环境与安装步骤
- Python版本:3.11
- nodriver版本:0.37
- 安装操作:
python3.11 -m venv venv source venv/bin/activate pip install nodriver
测试代码
import nodriver as uc async def main(): browser = await uc.start() page = await browser.get('https://www.nowsecure.nl') if __name__ == '__main__': uc.loop().run_until_complete(main())
报错信息
python main.py Traceback (most recent call last): File "/Users/mascai/root_folder/dev/projects/54_nodriver/main.py", line 11, in <module> uc.loop().run_until_complete(main()) File "/opt/homebrew/Cellar/python@3.11/3.11.9_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File "/Users/mascai/root_folder/dev/projects/54_nodriver/main.py", line 5, in main browser = await uc.start() ^^^^^^^^^^^^^^^^ File "/Users/mascai/root_folder/dev/projects/54_nodriver/venv/lib/python3.11/site-packages/nodriver/core/util.py", line 96, in start return await Browser.create(config) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/mascai/root_folder/dev/projects/54_nodriver/venv/lib/python3.11/site-packages/nodriver/core/browser.py", line 91, in create await instance.start() File "/Users/mascai/root_folder/dev/projects/54_nodriver/venv/lib/python3.11/site-packages/nodriver/core/browser.py", line 394, in start await self.connection.send(cdp.target.set_discover_targets(discover=True)) File "/Users/mascai/root_folder/dev/projects/54_nodriver/venv/lib/python3.11/site-packages/nodriver/core/connection.py", line 412, in send if not self.websocket or self.closed: ^^^^^^^^^^^ File "/Users/mascai/root_folder/dev/projects/54_nodriver/venv/lib/python3.11/site-packages/nodriver/core/connection.py", line 368, in __getattr__ return getattr(self.target, item) ^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'closed' successfully removed temp profile /var/folders/t6/7jk0v3817zb2_xfb6bf0vxpc0000gn/T/uc_tedc5epz
解决建议
- 指定浏览器路径:手动指定Chrome/Chromium的可执行文件路径,避免自动查找失败:
browser = await uc.start(browser_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome")
(根据你的系统实际安装路径调整)
- 调整nodriver版本:0.37版本可能存在兼容性bug,尝试降级到0.36版本:
pip install nodriver==0.36
或者直接升级到最新稳定版:
pip install --upgrade nodriver
检查浏览器版本兼容性:确保本地Chrome/Chromium版本在114以上,可通过终端执行
google-chrome --version(macOS/Linux)查看版本号,版本过低则升级浏览器。禁用沙箱模式:添加
no_sandbox=True参数启动浏览器:
browser = await uc.start(no_sandbox=True)
- 替换异步循环方式:改用标准asyncio的启动方式,替代nodriver自带的loop:
import asyncio import nodriver as uc async def main(): browser = await uc.start() page = await browser.get('https://www.nowsecure.nl') if __name__ == '__main__': asyncio.run(main())
内容的提问来源于stack exchange,提问作者mascai
相关产品推荐
相关产品推荐

