树莓派4开机自启Python Selenium脚本启动Chromium失败求助
解决树莓派4 Raspbian下Selenium开机自启无法启动Chromium的问题
问题核心分析
从日志看,核心问题有两个:
- Selenium的
executable_path参数已被弃用,需改用Service对象规范写法 - Cron运行环境缺失必要变量与权限,导致Chromium无法创建DevToolsActivePort,启动后异常退出
分步解决方案
1. 重构Selenium代码,适配新版API
修改test.py中初始化浏览器驱动的代码,替换旧的executable_path写法,同时添加Chromium启动必需参数:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # 配置Chromium启动参数 chrome_options = webdriver.ChromeOptions() chrome_options.binary_location = "/usr/bin/chromium-browser" # 解决DevToolsActivePort缺失问题的关键参数 chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--remote-debugging-port=9222") chrome_options.add_argument("--display=:0") # 使用Service对象初始化驱动 service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=chrome_options)
若未安装
webdriver-manager,先执行pip install webdriver-manager,它会自动匹配对应版本的Chromedriver,避免手动适配的麻烦。
2. 修正Cron配置,加载完整用户环境
当前cron使用env -i清空了环境变量,导致丢失系统关键配置,替换为以下配置:
@reboot sleep 90 && /bin/bash -c 'source /home/pi/.bashrc && python /home/pi/Documents/test.py' >> /home/pi/logs/cronlog 2>&1
- 延长休眠到90秒,确保Raspbian桌面环境完全加载完成
- 通过
source /home/pi/.bashrc加载pi用户的完整环境变量(包括PATH、DISPLAY等) - 移除
env -i,避免清空必要的系统环境
3. 基础权限与环境验证
- 确保是用pi用户配置的cron:执行
crontab -e编辑的是pi用户的定时任务,而非root - 确认日志目录存在:执行
mkdir -p /home/pi/logs创建日志目录,避免写入失败 - 手动模拟cron环境测试:执行
/bin/bash -c 'source /home/pi/.bashrc && python /home/pi/Documents/test.py',验证脚本能否正常运行
4. 额外排查方向
- 检查Chromium权限:执行
/usr/bin/chromium-browser,确认pi用户能正常启动浏览器 - 查看系统日志:执行
grep cron /var/log/syslog,排查cron执行时的其他错误信息
内容的提问来源于stack exchange,提问作者Przemek
相关产品推荐
相关产品推荐

