C# Selenium ChromeDriver报Invalid --log-level value启动失败如何解决
核心报错原因
你遇到的问题全部由配置错误导致,无需手动创建DevToolsActivePort文件,该文件是Chrome启动成功后自动生成的临时文件,启动失败自然找不到该文件:
BinaryLocation参数配置错误:该参数用于指定Chrome浏览器本体的可执行文件路径,你错误填写为chromedriver.exe(驱动程序)的路径,导致驱动尝试把驱动当浏览器启动,直接触发进程崩溃。--disable-logging参数不兼容:新版Chrome已废弃该参数,你添加该参数后直接触发控制台输出Invalid --log-level value错误,导致进程初始化失败退出。
修正后的代码示例
如果chromedriver.exe放在程序运行目录,可通过ChromeDriverService显式指定驱动路径,代码如下:
// 指定chromedriver驱动的所在路径 var driverService = ChromeDriverService.CreateDefaultService("./", "chromedriver.exe"); ChromeOptions op = new ChromeOptions(); // 如需使用独立便携版Chrome,取消下方注释,填便携版chrome.exe的相对/绝对路径 // op.BinaryLocation = "./chrome-win/chrome.exe"; // 移除废弃的--disable-logging参数,用--log-level=3仅输出错误日志,保留其他稳定参数 op.AddArguments("--headless=new", "--disable-gpu", "--no-sandbox", "--disable-dev-shm-usage", "--log-level=3"); ChromeDriver driver = new ChromeDriver(driverService, op);
实现程序自包含(不依赖系统安装的Chrome)的方案
完全可以实现,操作步骤如下:
- 下载和你所用
chromedriver.exe大版本完全匹配的Chrome便携版压缩包 - 解压后将整个Chrome目录放到程序运行目录中,比如命名为
chrome-win - 取消上方代码中
BinaryLocation的注释,修改为便携版目录中chrome.exe的相对路径即可 - 打包时将
chromedriver.exe、Chrome便携版目录和程序文件一起打包,拷到任意Windows设备都可直接运行,无需依赖系统安装的Chrome。
额外排查注意事项
- 必须保证
chromedriver.exe和Chrome的大版本完全一致,版本不匹配会直接导致启动失败 - 右键点击
chromedriver.exe和Chrome的chrome.exe,查看属性页如果有「解除锁定」选项,需要点击解锁后再运行 - 避免将程序放在中文路径、带特殊符号或空格的路径下,防止路径解析错误
内容的提问来源于stack exchange,提问作者Ripper
相关产品推荐
相关产品推荐

