C#使用Selenium传参启动Electron应用不生效问题咨询
问题现象
启动Electron应用时,需传入index.js路径、--startServer作为启动参数才能加载Electron对应的HTML内容。实际运行时配置的ChromeOptions未识别传入的参数,仅打开了默认的electron.exe程序,未加载预期页面。
原实现代码
ChromeOptions electronOption = new ChromeOptions(); electronOption.AddArguments("C:\Program Files\src\index.js", "--startServer"); var service = ChromeDriverService.CreateDefaultService("path to chromedriver.exe", "path to electron.exe"); driver = new ChromeDriver(service, electronOption);
错误原因
- C#普通字符串中反斜杠为转义字符,原代码中
"C:\Program Files\src\index.js"未做转义处理,会被解析为非法路径,导致参数传递失效。 - Electron程序路径配置位置错误:
ChromeDriverService.CreateDefaultService的第二个参数为ChromeDriver服务自身的可执行文件名,并非待启动的Electron程序路径,传入Electron路径会导致驱动服务无法正确关联目标程序。 - 未显式指定ChromeOptions的二进制程序路径,驱动会默认查找系统安装的Chrome/默认Electron程序,无法加载指定的应用配置。
修正后代码
ChromeOptions electronOption = new ChromeOptions(); // 指定Electron可执行文件的完整路径 electronOption.BinaryLocation = @"C:\Your\Actual\Path\To\electron.exe"; // 逐次传入启动参数,使用@逐字字符串避免路径转义问题 electronOption.AddArgument(@"C:\Program Files\src\index.js"); electronOption.AddArgument("--startServer"); // 第一个参数传入chromedriver.exe所在目录即可,无需传入Electron路径 var service = ChromeDriverService.CreateDefaultService(@"C:\Your\Actual\Path\To\chromedriver\directory"); driver = new ChromeDriver(service, electronOption);
注意:如果
index.js路径包含空格,不需要额外加引号,Selenium的AddArgument方法会自动处理参数拼接。
内容的提问来源于stack exchange,提问作者Hari Krishnan
相关产品推荐
相关产品推荐

