You need to enable JavaScript to run this app. 89.0版Selenium MSEdgeDriver NuGet包缺失Linux二进制致构建失败
优惠活动
大模型
产品
解决方案
定价
更多

89.0版Selenium MSEdgeDriver NuGet包缺失Linux二进制致构建失败

修复方案

方案1:升级MSEdgeDriver NuGet包到支持Linux的版本

  • Selenium.WebDriver.MSEdgeDriver从90.0.818.38版本开始才正式在包内打包linux64目录的对应驱动文件,没有固定Edge大版本强需求的话,这是最省心的处理方式。
  • 操作:直接修改项目.csproj文件中的包引用,将版本从89.0.774.54调整为90.0.818.38及以上正式版,执行dotnet restore还原依赖即可,无需额外配置。
  • 注意:升级后需保证Linux容器内安装的Edge浏览器版本,与驱动版本大版本一致,避免出现版本不兼容的报错。

方案2:必须固定89版本驱动时,手动补充Linux适配文件

如果项目受限于Edge浏览器版本要求,不能升级驱动包版本,按以下步骤操作:

  • 准备与89.0.774.54版本完全匹配的Linux x64架构msedgedriver可执行文件,确保和容器内Edge浏览器版本一致。
  • 二选一实现驱动定位:
    1. 不依赖NuGet包的自动搜索逻辑:在项目根目录新建driver/linux64目录,放入准备好的msedgedriver并赋予可执行权限,代码初始化Edge驱动时手动指定路径:
      var edgeOptions = new EdgeOptions();
      // Linux环境下指向自定义的驱动路径,Windows/macOS环境走默认逻辑
      var driverPath = RuntimeInformation.IsOSPlatform(OSPlatform.Linux)
          ? Path.Combine(AppContext.BaseDirectory, "driver/linux64")
          : null;
      var driver = new EdgeDriver(driverPath, edgeOptions);
      
    2. 无需修改业务代码:将补驱动的逻辑写入Dockerfile构建流程,在依赖还原后、正式构建前,手动创建缺失的目录结构并放入驱动:
      # 示例Dockerfile片段
      FROM mcr.microsoft.com/dotnet/sdk:latest AS build
      WORKDIR /src
      # 先执行依赖还原
      COPY *.csproj ./
      RUN dotnet restore
      # 手动补89版本包缺失的Linux驱动目录与文件
      RUN mkdir -p /root/.nuget/packages/selenium.webdriver.msedgedriver/89.0.774.54/driver/linux64 \
          && cp ./assets/msedgedriver /root/.nuget/packages/selenium.webdriver.msedgedriver/89.0.774.54/driver/linux64/ \
          && chmod +x /root/.nuget/packages/selenium.webdriver.msedgedriver/89.0.774.54/driver/linux64/msedgedriver
      # 正常执行后续构建发布逻辑
      COPY . .
      RUN dotnet publish -c Release -o /app/publish
      
  • 注意:不要手动修改全局NuGet缓存目录的文件,所有补驱动的逻辑必须纳入版本管理的构建流程,避免本地缓存的临时修改导致构建结果不可复现。

方案3:替换为跨平台自动驱动管理方案

如果不想手动维护驱动文件,可以移除项目中对Selenium.WebDriver.MSEdgeDriver的依赖,改用Selenium官方的驱动自动管理包,它会根据当前运行环境的操作系统、浏览器版本自动匹配下载对应驱动,不需要依赖原有NuGet包的平台目录结构。

关于报错路径末尾的双斜杠问题:89版本的MSEdgeDriver NuGet包的构建脚本,在匹配不到对应平台的目录时,会将平台路径变量赋值为空,最终拼接出driver//msedgedriver的路径,本质就是缺失Linux对应的平台子目录,不存在其他配置类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 06:45:05