You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET5 Selenium WebDriver在Linux Docker容器运行报No such file or directory错误

.NET 5 Docker环境Selenium ChromeDriver报错解决方案

核心问题定位

  • ChromeDriver架构不匹配:你的Dockerfile中指定版本94的下载链接使用了chromedriver_mac64_m1.zip,这是苹果M1芯片的macOS专属驱动,无法在Linux容器中被识别为可执行文件,即使路径正确也会触发文件不存在错误。同时你先后执行了两次ChromeDriver安装逻辑,最新版安装会被后续指定版本的安装覆盖,属于冗余冲突配置。
  • 缺少Chrome浏览器本体:ChromeDriver只是Chrome的调度代理,本身依赖Chrome/Chromium浏览器二进制文件,你的Dockerfile中仅安装了驱动,未安装浏览器本体,也会触发同类错误。
  • 版本匹配问题:你标注的ChromeDriver版本存在94.0.4606.61和94.0.4606.41两个不一致的记录,若后续安装的浏览器大版本与驱动不匹配,也会出现运行错误。

修复步骤

1. 修正Dockerfile安装逻辑

删除原有冗余的ChromeDriver安装代码,替换为先安装对应版本Chrome浏览器、再安装同版本Linux架构ChromeDriver的逻辑:

# 安装系统依赖与Chrome浏览器本体
RUN apt-get update && apt-get install -y \
    wget \
    unzip \
    gnupg \
    --no-install-recommends \
    && wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \
    && apt-get update && apt-get install -y google-chrome-stable=94.0.4606.81-1 \
    --no-install-recommends \
    && rm -rf /var/lib/apt/lists/*

# 安装对应版本的Linux x64架构ChromeDriver
RUN CHROMEDRIVER_VERSION=94.0.4606.61 \
    && wget -O /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip \
    && unzip /tmp/chromedriver_linux64.zip -d /usr/local/bin/ \
    && chmod +x /usr/local/bin/chromedriver \
    && rm /tmp/chromedriver_linux64.zip

2. 补充Chrome启动参数

Docker环境共享内存默认限制很小,需要额外添加参数避免Chrome崩溃,修改后的代码如下:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

var chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("headless");
chromeOptions.AddArgument("no-sandbox");
// 新增Docker环境必要参数
chromeOptions.AddArgument("--disable-dev-shm-usage");
chromeOptions.AddArgument("--disable-gpu");
chromeOptions.PageLoadStrategy = PageLoadStrategy.Eager;

// ChromeDriver已放入系统PATH路径,无需额外指定目录
var driver = new ChromeDriver(chromeOptions);

3. 运行前验证

镜像构建完成后,先进入容器执行以下命令验证环境正确性:

  • 执行chromedriver --version确认驱动可正常运行,版本为94.0.4606.61
  • 执行google-chrome --version确认浏览器可正常运行,大版本为94

补充说明

System.ComponentModel.Win32Exception是.NET跨平台通用的进程启动异常,并非仅Windows环境会抛出,此处触发的本质原因是系统无法执行指定的ChromeDriver二进制文件。

内容的提问来源于stack exchange,提问作者Albert Pham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:24:03