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

Selenium C# Web Driver 4.11.0部署服务器运行异常求助

问题描述

将Selenium C# Web Driver包从4.2版本升级至4.11版本,利用Selenium 4.6及以上版本的新特性,不再手动指定驱动路径,交由Selenium Manager自动管理。本地运行正常,但部署到服务器后出现以下错误:

Unable to obtain chrome using Selenium Manager; 相关文档可参考Selenium官方故障排查
stacktrace
at OpenQA.Selenium.DriverFinder.FullPath(DriverOptions options)
at OpenQA.Selenium.Chrome.ChromeDriverService.CreateDefaultService(ChromeOptions options)
at OpenQA.Selenium.Chrome.ChromeDriverService.CreateDefaultService()

相关代码:

var headlessValue = Convert.ToBoolean(_config["Driver:HeadlessFlag"]);
var downloadDirectory = _config["Driver:BaseDownloadLocation"];
var currDirectory = Directory.GetCurrentDirectory();
var chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--no-sandbox");
chromeOptions.AddArgument("--disable-gpu");
chromeOptions.AddArgument("--disable-dev-shm-usage");
               
chromeOptions.AddUserProfilePreference("download.default_directory", @customPath + @currentUser);
chromeOptions.AddUserProfilePreference("download.prompt_for_download", false);
chromeOptions.AddUserProfilePreference("disable-popup-blocking", "true");
chromeOptions.AddUserProfilePreference("profile.default_content_setting_values.automatic_downloads", 1);
ChromeDriverService driverService = ChromeDriverService.CreateDefaultService();
var driver = new ChromeDriver(driverService, chromeOptions);
var driverProcessIds = driverService.ProcessId;
driver.Manage().Timeouts().ImplicitWait.Add(System.TimeSpan.FromSeconds(120));
driver.Manage().Timeouts().PageLoad.Add(System.TimeSpan.FromSeconds(120));
解决方案
  • 检查服务器Chrome安装状态:Selenium Manager需要找到已安装的Chrome来匹配对应驱动,服务器可能未安装Chrome,或安装路径不在默认位置。手动安装Chrome并确保其在系统PATH中,也可通过chromeOptions.BinaryLocation指定Chrome二进制文件的绝对路径。
  • 验证服务器网络权限:Selenium Manager需联网下载对应版本的ChromeDriver,若服务器处于内网或有防火墙限制,会导致下载失败。可手动下载匹配Chrome版本的ChromeDriver,放到服务器可访问路径后,通过ChromeDriverService.CreateDefaultService("驱动文件所在路径")指定;或配置服务器允许Selenium Manager访问驱动下载源。
  • 补充无头模式参数:服务器通常无图形界面,代码中已读取headlessValue但未添加到ChromeOptions,需补充:
    if (headlessValue)
    {
        chromeOptions.AddArgument("--headless=new"); // Selenium 4.10+推荐使用该参数
    }
    
  • 检查服务器文件权限:Selenium Manager下载驱动时需要写入权限,确保程序运行账号对当前目录或临时目录有读写权限。
  • 手动指定ChromeDriver版本:若自动匹配出现问题,可通过环境变量SE_Driver_VERSION设置驱动版本,或在代码中配置:
    chromeOptions.AddAdditionalOption("chromedriverVersion", "116.0.5845.96"); // 替换为与Chrome匹配的版本号
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:15:12