Selenium启动失败:DeprecationWarning与WebDriverException错误求助
问题分析与解决方案
你的问题核心是Docker环境中Selenium ChromeDriver意外退出(状态码255),同时存在executable_path弃用警告。以下是针对性的解决步骤:
1. 修正Selenium 4的Driver初始化方式
Selenium 4.6+已内置Driver自动管理功能,无需手动指定executable_path,同时补充无头模式必要参数避免运行异常。修改main.py如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service options = Options() options.headless = True options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') # 补充无头模式必备参数 options.add_argument('--disable-gpu') options.add_argument('--window-size=1920,1080') options.add_argument('--start-maximized') # 方式1:利用Selenium自动管理Driver(推荐) driver = webdriver.Chrome(options=options) # 方式2:手动指定Docker内Driver路径(可选) # service = Service('/usr/local/bin/chromedriver') # driver = webdriver.Chrome(service=service, options=options) driver.get('https://www.google.com') print(driver.title) driver.quit()
2. 确保Chrome与ChromeDriver版本严格匹配
Dockerfile中原逻辑可能导致Chrome和Driver版本不匹配,这是状态码255的常见原因。修改Dockerfile,获取与已安装Chrome对应的Driver版本:
FROM python:3.10-buster # 安装Chrome运行依赖 RUN apt-get update && apt-get install -y \ curl unzip gettext python-babel \ ffmpeg \ poppler-utils \ fonts-takao-* fonts-wqy-microhei fonts-unfonts-core \ libnss3 libgconf-2-4 libfontconfig1 libxrender1 libxss1 # 安装Chrome稳定版 RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \ dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install \ && rm google-chrome-stable_current_amd64.deb # 获取已安装Chrome的版本,下载对应版本的ChromeDriver RUN CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+\.\d+') && \ CHROME_DRIVER_RELEASE=$(curl -sL "https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_STABLE") && \ curl -sL "https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/$CHROME_DRIVER_RELEASE/linux64/chromedriver-linux64.zip" > chromedriver.zip && \ unzip chromedriver.zip -d /tmp && \ mv /tmp/chromedriver-linux64/chromedriver /usr/local/bin/ && \ rm -rf chromedriver.zip /tmp/chromedriver-linux64 # 安装Python依赖 COPY requirements.txt requirements.txt RUN python -m pip install --upgrade pip && pip install -r requirements.txt # 设置工作目录 ENV APP_HOME /app WORKDIR $APP_HOME ENV PYTHONPATH $APP_HOME COPY . . # 可选:创建非root用户运行Chrome(避免权限限制) RUN useradd -m selenium-user USER selenium-user
3. 验证与排查步骤
- 重新构建镜像:
docker build -t selenium-chrome . - 运行容器测试:
docker run --rm selenium-chrome python main.py - 若仍报错,进入容器检查版本一致性:
确保两个版本号完全一致。docker run -it --rm selenium-chrome bash google-chrome --version chromedriver --version
内容的提问来源于stack exchange,提问作者Nori
相关产品推荐
相关产品推荐

