Odoo 16容器中运行Selenium代码遇WebDriverException报错求助
解决Odoo容器中Selenium Chrome驱动意外退出(状态码-5)的问题
核心问题修正:传递Chrome配置参数
你的代码中创建了chrome_options但未将其传入webdriver.Chrome实例,导致无头模式、沙箱禁用等配置未生效,这是驱动崩溃的主要原因之一。修正后的代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 新版无头模式,兼容性优于旧版--headless chrome_options.add_argument('--headless=new') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') # 补充参数解决非root用户运行权限问题 chrome_options.add_argument('--disable-setuid-sandbox') # 禁用GPU渲染,适配无头环境 chrome_options.add_argument('--disable-gpu') # 指定临时用户数据目录,避免权限冲突 chrome_options.add_argument('--user-data-dir=/tmp/chrome-user-data') # 必须将配置传入驱动实例 d = webdriver.Chrome(options=chrome_options) d.get("http://localhost:8069/web/database/manager") # 操作完成后务必关闭驱动,释放资源 d.quit()
容器环境配置调整
1. 简化浏览器与驱动安装,避免版本冲突
你同时安装了Chromium和Chrome,可能导致驱动与浏览器版本不匹配或冲突。建议统一使用Chrome,调整安装命令如下:
apt-get update && apt-get install -y --no-install-recommends \ libgconf-2-4 \ wget \ && wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \ && dpkg -i google-chrome-stable_current_amd64.deb \ && apt-get -f install -y \ && rm -rf google-chrome-stable_current_amd64.deb \ && apt-get clean && rm -rf /var/lib/apt/lists/*
安装完成后确认版本匹配:
google-chrome --version chromedriver --version
2. 调整容器运行权限
Odoo通常以非root用户运行,Chrome默认限制非root用户执行。在Dockerfile中添加以下配置:
# 创建Chrome临时数据目录并开放权限 RUN mkdir -p /tmp/chrome-user-data && chmod -R 777 /tmp/chrome-user-data # 切换到Odoo用户运行服务 USER odoo
3. 优化资源限制
虽然你设置了limit_memory_hard = 9999999999,但容器本身的内存配额可能不足。启动容器时增加内存分配:
docker run -d --name odoo16 --memory=4g ... # 根据实际情况调整内存值
4. 验证驱动可执行性
在容器内手动执行chromedriver,检查是否能正常启动:
/usr/bin/chromedriver --version
若出现权限错误,执行:
chmod +x /usr/bin/chromedriver
额外排查点
- 用
curl http://localhost:8069/web/database/manager在容器内验证Odoo服务是否可访问 - 查看Odoo日志,确认是否存在内存不足的报错,若有进一步提升容器内存配额
内容的提问来源于stack exchange,提问作者dhouib
相关产品推荐
相关产品推荐

