googleapis - ChromeDriver no existe en el script de prueba C#de Selenium WebDriver
chromedriver index (6)
Descubrí que, aunque se había descargado el paquete Selenium.WebDriver.ChromeDriver NuGet y, en consecuencia, el archivo chromedriver.exe se estaba copiando en la carpeta bin en el momento de la compilación, además era necesario marcarlo como un elemento de implementación (porque es una prueba de unidad). que se copió en / corrió desde la carpeta TestResults) - es decir
[DeploymentItem (@ "chromedriver.exe")]
Me he encontrado con algunas personas con el mismo problema que parecía haber resuelto el problema con System.addProperty("webdriver.chrome.driver", ".../chromedriver.exe");
antes de instanciar el controlador.
He tenido poca suerte con esto y sigo recibiendo el error de que el archivo .../bin/Debug/chromedriver.exe
no existe.
¿Alguien ha tenido suerte de hacer que esto funcione sin ponerlo en la carpeta bin?
Código de ejemplo:
System.Environment.SetEnvironmentVariable("webdriver.chrome.driver", @"c:/path/to/driver/chromedriver.exe");
BrowserDriver = new ChromeDriver();
Este es el error que veo: OpenQA.Selenium.DriverServiceNotFoundException: el archivo chromedriver.exe no existe en el directorio actual o en un directorio en la variable de entorno PATH.
Resolví este problema especificando el argumento ''testsettings'' en el comando para ejecutar las pruebas unitarias.
P.ej
E:/Development/SampleProject/SampleProject.MvcWebApp/SampleProject.MvcWebApp.JavaScriptUnitTests/JavaScriptUnitTests/bin/Debug>"C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/mstest.exe" /testcontainer:JavaScriptUnitTests.dll /category:"JavaScriptUnitTests" /testsettings:../../../Local.Testsettings /resultsfile:../../../../../MsTestResults/SampleProject.MvcWebApp.JavaScript.Tests.trx
Uso "/testsettings:....../Local.Testsettings" porque el archivo Local.testsettings es 4 niveles más alto que el nivel donde estoy ejecutando este comando. Deberías cambiarlo en consecuencia.
Este es el comando usado en el archivo ccnet.config
<exec>
<executable>C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/mstest.exe</executable>
<baseDirectory>SampleProject.MvcWebApp/SampleProject.MvcWebApp.JavaScriptUnitTests/JavaScriptUnitTests/bin/Debug</baseDirectory>
<buildArgs>/testcontainer:JavaScriptUnitTests.dll /category:"JavaScriptUnitTests" /testsettings:../../../Local.Testsettings /resultsfile:../../../../../MsTestResults/SampleProject.MvcWebApp.JavaScript.Tests.trx</buildArgs>
<successExitCodes>0</successExitCodes>
</exec>
Esto podría deberse a que los paquetes de NuGet se cargan desde un lugar global en lugar de la carpeta de paquetes de los proyectos de .NET Framework. Esto funcionó para mí:
IWebDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
Pregunta anterior, nueva respuesta (para lo que vale la pena): simplemente instale el paquete Selenium.WebDriver.ChromeDriver de Nuget. Chromedriver.exe estará en el directorio bin / debug en la siguiente compilación.
Edición de terceros 2017-09
En esta página de github jsakamoto / nupkg-selenium-webdriver-chromedriver / que después de ejecutar Install-Package Selenium.WebDriver -Version 3.5.2
el chromedriver (.exe) se encuentra debajo de esta carpeta
"{carpeta de soluciones} /paquetes/Selenium.WebDriver.ChromeDriver. {ver} / driver / {plataforma}"
Ya que está usando C #, debe usar la sobrecarga del constructor para ChromeDriver que le permite especificar la ruta al directorio que contiene chromedriver.exe. Esto es:
IWebDriver driver = new ChromeDriver(@"C:/my/path/to/chromedriver/directory");
you may have enum for your all drivers :
public enum Drivers
{
Chrome,
Firefox,
Safari,
Edge,
IE
}
public static IWebDriver GetDriver(Drivers driver)
{
outPutDirectory -> es una ubicación donde se copian todos los archivos y archivos DLL compatibles cuando se crea la solución. ejemplo: C: / Users / Mike / source / repos / Automation / Automation / bin / Debug
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// below is my location where I copied all drivers like chromedriver.exe
relativePath -> es una carpeta que se está copiando cuando crea un ejemplo de solución: C: / Users / Mike / source / repos / Automation / Automation / bin / Debug / BrowserDriver
var relativePath = @"../../bin/Debug/BrowserDriver";
// Entonces, ''chromeDriverPath'' le dará la ubicación exacta de su controlador, sin importar qué máquina o PC esté ejecutando Automatización
var chromeDriverPath = Path.GetFullPath(Path.Combine(outPutDirectory,relativePath));
// return this driver , just debug this code and check the "outPutDirectory" path
return new ChromeDriver(chromeDriverPath);
}