Mac系统下Python调用Selenium无法启动WebDriver的问题排查求助
问题根源&解决方案
嘿,我直接从你提供的Geckodriver日志里找到了核心问题:
Running Firefox as root in a regular user's session is not supported. ($HOME is /Users/username which is owned by user.)
你用sudo python3来启动脚本,这会让整个Python进程(包括它调用的Geckodriver和Firefox浏览器)以root身份运行,但Firefox出于安全和权限逻辑的限制,绝对不允许在普通用户的会话环境下以root用户启动——这就是你看到“Process unexpectedly closed with status 1”错误的直接原因。
快速修复步骤
1. 放弃sudo,用普通用户身份运行脚本
这是最直接有效的解决办法,把启动命令改成:
python3 /Users/username/Library/'Mobile Documents/com~apple~CloudDocs'/test.py
如果之前加sudo是因为遇到了权限问题(比如脚本所在目录或依赖文件的读写权限不足),你可以针对性调整权限:
- 给脚本添加执行权限:
chmod +x /Users/username/Library/'Mobile Documents/com~apple~CloudDocs'/test.py - 修复目录归属(谨慎操作,确保路径正确):
chown -R username:staff /Users/username/Library/'Mobile Documents/com~apple~CloudDocs'/
2. 额外的优化建议(避免后续踩坑)
- 废弃API替换:在新版Selenium里,
FirefoxProfile已经被标记为废弃,推荐用Options.set_preference()来设置浏览器偏好,比如原来用profile配置的下载路径、隐私设置,都可以换成这种方式:from selenium.webdriver.firefox.options import Options options = Options() # 示例:设置自定义下载目录 options.set_preference("browser.download.dir", "/Users/username/Downloads") options.set_preference("browser.download.folderList", 2) # 初始化驱动时只传options即可 driver = webdriver.Firefox(options=options, executable_path=executable_path) - 检查Geckodriver权限:确保你的普通用户有Geckodriver文件的执行权限,执行这条命令:
chmod +x /path/to/your/geckodriver - 版本兼容性确认:虽然你说已经下载了对应版本的Geckodriver,但可以再核对下Firefox版本和Geckodriver的匹配关系(比如Firefox 90+搭配Geckodriver 0.29+是完全兼容的)。
内容的提问来源于stack exchange,提问作者AppCreator
相关产品推荐
相关产品推荐

