web-dev-qa-db-fra.com

ChromeDriver n'existe pas dans le script de test Selenium WebDriver C #

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();
23
Highstead

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");
59
JimEvans

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.

3ème partie modifier 2017-09

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}"

20
Mcanic

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));
8
Harun Davood
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);
   }
5
Mike ASP

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")]

1
TerrorBight

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>
0
Ali Lane