J'ai rencontré quelques personnes avec le même problème qui semblaient avoir résolu le problème avec System.addProperty("webdriver.chrome.driver", ".../chromedriver.exe");
avant d'instancier le pilote.
J'ai eu peu de chance avec cela et j'obtiens toujours l'erreur que le fichier .../bin/Debug/chromedriver.exe
n'existe pas.
Quelqu'un a-t-il eu de la chance de le faire fonctionner sans le mettre dans le dossier bin?
Exemple de code:
System.Environment.SetEnvironmentVariable("webdriver.chrome.driver", @"c:\path\to\driver\chromedriver.exe");
BrowserDriver = new ChromeDriver();
Puisque vous utilisez C #, vous devez utiliser la surcharge de constructeur pour ChromeDriver qui vous permet de spécifier le chemin du répertoire contenant chromedriver.exe. En être témoin:
IWebDriver driver = new ChromeDriver(@"C:\my\path\to\chromedriver\directory");
Ancienne question, nouvelle réponse (pour ce que cela vaut): il suffit d'installer le package Nuget Selenium.WebDriver.ChromeDriver. Chromedriver.exe sera dans le répertoire bin/debug lors de la prochaine construction.
Sur cette page github jsakamoto/nupkg-Selenium-webdriver-chromedriver/ qu’après l’exécution de Install-Package Selenium.WebDriver -Version 3.5.2
, le chromedriver (.exe) se trouve sous ce dossier
"{dossier de la solution} /packages/Selenium.WebDriver.ChromeDriver. {ver} /driver/{plateforme}"
Cela est peut-être dû au fait que les packages NuGet sont chargés depuis un emplacement global au lieu du dossier packages des projets .NET Framework. Cela a fonctionné pour moi:
IWebDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
you may have enum for your all drivers :
public enum Drivers
{
Chrome,
Firefox,
Safari,
Edge,
IE
}
public static IWebDriver GetDriver(Drivers driver)
{
outPutDirectory -> est un emplacement où toutes les dll et fichiers correspondants sont copiés lors de la génération de la solution. Exemple: C:\Utilisateurs\Mike\source\repos\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 -> est l'un des dossiers en cours de copie lorsque vous créez la solution exampple: C:\Utilisateurs\Mike\source\repos\Automatisation\Automation\Automatisation\bin\Debug\Navigateur
var relativePath = @"..\..\bin\Debug\BrowserDriver";
// Donc 'chromeDriverPath' vous indiquera l'emplacement exact de votre pilote, peu importe la machine ou le PC sur lequel vous utilisez Automation
var chromeDriverPath = Path.GetFullPath(Path.Combine(outPutDirectory,relativePath));
// return this driver , just debug this code and check the "outPutDirectory" path
return new ChromeDriver(chromeDriverPath);
}
J'ai constaté que, même si le package Selenium.WebDriver.ChromeDriver NuGet avait été téléchargé, le fichier chromedriver.exe était par conséquent copié dans le dossier bin au moment de la compilation, mais devait également être marqué en tant qu'élément de déploiement (car il s'agit d'un test unitaire). copié dans/exécuter-à partir du dossier TestResults) - c’est-à-dire.
[DeploymentItem (@ "chromedriver.exe")]
Voici l'erreur que je vois: OpenQA.Selenium.DriverServiceNotFoundException: le fichier chromedriver.exe n'existe pas dans le répertoire actuel ni dans un répertoire de la variable d'environnement PATH.
J'ai résolu ce problème en spécifiant l'argument 'testsettings' dans la commande pour exécuter les tests unitaires.
Par exemple.
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
J'utilise "/testsettings:......\Local.Testsettings" car le fichier Local.testsettings a 4 niveaux de plus que le niveau où j'exécute cette commande. Vous devriez le changer en conséquence.
C'est la commande utilisée dans le fichier 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>