使用Specflow启动Chrome驱动程序时- chromedriver.exe文件不存在错误 &



所以我使用Visual Studio并安装了Specflow扩展,Specflow项目,并且有一个类库项目,其中包含一个启动Chrome驱动程序的方法。我用Specflow编写的测试是;

LaunchDriver launchDriver = new LaunchDriver() ;
[Given(@"I Launch a Chrome Driver")]
public void GivenILaunchAChromeDriver()
{
launchDriver.LaunchChrome();
}
LaunchDriver类的代码为:
public class LaunchDriver
{
public IWebDriver webDriver;
public void LaunchChrome()
{
string PathtoChromeExe = @"C:Program Files (x86)GoogleChromeApplication";
webDriver = new ChromeDriver(PathtoChromeExe);
webDriver.Manage().Timeouts().PageLoad = TimeSpan.FromMinutes(5);
webDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
webDriver.Manage().Window.Maximize();
}
}

当我尝试通过测试资源管理器运行此测试时,我看到由于以下错误

,测试失败了启动驱动程序并导航到Google.com持续时间:378 ms

Message: 
The file C:Program Files (x86)GoogleChromeApplicationchromedriver.exe does not exist. The driver can be downloaded at http://chromedriver.storage.googleapis.com/index.html
Stack Trace: 
OpenQA.Selenium.DriverServiceNotFoundException: The file C:Program Files (x86)GoogleChromeApplicationchromedriver.exe does not exist. The driver can be downloaded at http://chromedriver.storage.googleapis.com/index.html
DriverService.ctor(String servicePath, Int32 port, String driverServiceExecutableName, Uri driverServiceDownloadUrl)
ChromiumDriverService.ctor(String executablePath, String executableFileName, Int32 port, Uri downloadUrl)
ChromeDriverService.ctor(String executablePath, String executableFileName, Int32 port)
ChromeDriverService.CreateDefaultService(String driverPath, String driverExecutableFileName)
ChromeDriverService.CreateDefaultService(String driverPath)

我需要启动的Chrome驱动程序,其文件名是我指定的路径中的Chrome .exe,但由于某种原因Specflow或系统正在寻找chromedriver.exe来启动它找不到。我如何配置我的代码来启动chrome.exe而不是chromedriver.exe?

关于"chromedriver"one_answers"chrome".

文件chrome.exe是web浏览器Google Chrome的可执行文件。这个名为chromedriver.exe的文件在你的机器上启动了一个服务器,它作为你的自动化代码和谷歌浏览器之间的桥梁。

ChromeDriver(string)的构造函数需要ChromeDriver.exe的路径,而不是web浏览器可执行文件的路径。

如果你需要指定Google Chrome浏览器可执行文件的位置,你需要用一个options对象初始化ChromeDriver:

public void LaunchChrome()
{
var options = new ChromeDriverOptions()
{
BinaryLocation = @"C:Program Files (x86)GoogleChromeApplication"
};
webDriver = new ChromeDriver(options);
webDriver.Manage().Timeouts().PageLoad = TimeSpan.FromMinutes(5);
webDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
webDriver.Manage().Window.Maximize();
}

此代码将在该特定位置使用chrome.exe,但在Windows %PATH%中搜索ChromeDriver.exe。如果需要指定ChromeDriver.exe的路径,请在第一个参数中将其作为字符串传递:

var options = new ChromeDriverOptions()
{
BinaryLocation = @"C:Program Files (x86)GoogleChromeApplication"
};
var driverPath = @"C:pathtofoldercontainingchromedriver";
webDriver = new ChromeDriver(driverPath, options);