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

Selenium C#中如何获取浏览器及驱动版本?含控制台提取需求

可以从控制台输出提取驱动版本,实现自动化版本匹配

完全可行,而且有两种更可靠的方式实现,不用等程序启动失败再抓日志:

方式一:直接让驱动输出版本号(最简单高效)

绝大多数Selenium驱动(ChromeDriver、GeckoDriver等)都支持--version参数,执行后会直接输出版本信息,不需要启动完整的驱动会话。用C#的Process类就能捕获这个输出:

using System;
using System.Diagnostics;
using System.Text.RegularExpressions;

public static string GetChromeDriverVersion(string driverExecutablePath)
{
    var startInfo = new ProcessStartInfo
    {
        FileName = driverExecutablePath,
        Arguments = "--version",
        RedirectStandardOutput = true,
        UseShellExecute = false,
        CreateNoWindow = true // 不弹出控制台窗口
    };

    using (var driverProcess = Process.Start(startInfo))
    {
        driverProcess.WaitForExit();
        var output = driverProcess.StandardOutput.ReadToEnd();
        
        // 匹配ChromeDriver的版本号,格式类似 "ChromeDriver 118.0.5993.70"
        var versionMatch = Regex.Match(output, @"ChromeDriver\s+([\d.]+)");
        return versionMatch.Success ? versionMatch.Groups[1].Value : null;
    }
}

如果是GeckoDriver(Firefox),只需要调整正则表达式:

// GeckoDriver输出格式类似 "geckodriver 0.33.0"
var versionMatch = Regex.Match(output, @"geckodriver\s+([\d.]+)");

方式二:捕获驱动启动时的完整日志(同时获取浏览器版本)

如果需要同时获取浏览器版本,可以手动启动驱动进程并捕获其输出流(部分驱动会把日志输出到StandardError流):

using System;
using System.Diagnostics;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

public static (string DriverVersion, string BrowserVersion) GetDriverBrowserInfo(string driverPath)
{
    var startInfo = new ProcessStartInfo
    {
        FileName = driverPath,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        UseShellExecute = false,
        CreateNoWindow = true
    };

    using (var driverProcess = Process.Start(startInfo))
    {
        // 异步读取输出,避免进程死锁
        var outputTask = driverProcess.StandardOutput.ReadToEndAsync();
        var errorTask = driverProcess.StandardError.ReadToEndAsync();
        
        // 给驱动1秒时间输出启动日志,然后终止进程(不需要创建会话)
        System.Threading.Thread.Sleep(1000);
        driverProcess.Kill();
        driverProcess.WaitForExit();

        var fullLog = await outputTask + await errorTask;
        
        // 提取ChromeDriver版本
        var driverMatch = Regex.Match(fullLog, @"ChromeDriver\s+([\d.]+)");
        // 提取Chrome浏览器版本
        var browserMatch = Regex.Match(fullLog, @"Chrome\s+([\d.]+)");
        
        return (
            driverMatch.Success ? driverMatch.Groups[1].Value : null,
            browserMatch.Success ? browserMatch.Groups[1].Value : null
        );
    }
}

实现自动化匹配的后续步骤

  1. 获取本地浏览器版本:可以通过读取注册表(比如Chrome的版本存在HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon的version键)或WMI查询。
  2. 对比驱动版本与浏览器版本:Selenium驱动和浏览器的版本通常需要大版本一致(比如ChromeDriver 118.x对应Chrome 118.x)。
  3. 版本不匹配时自动下载对应驱动:根据获取到的浏览器版本,下载对应版本的驱动文件替换本地驱动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:27:46