web-dev-qa-db-fra.com

geckodriver.exe pas dans le répertoire courant ou variable de chemin, Selenium 2.53.1 + Firefox 48 + Selenium 3 Beta

Beaucoup de questions se posent sur Selenium 2.53.1 et Firefox 47.0.1, mais aucune sur la version bêta de Selenium 3. J'essaie d'utiliser les nouveaux pilotes Web Firefox gecko/marionette, mais j'ai l'emplacement du pilote dans; mon chemin d’environnement, le dossier d’installation de Firefox dans les programmes et l’emplacement du lecteur dans l’environnement système, il ne fonctionnera toujours pas correctement.

Erreur:

Le fichier geckodriver.exe n'existe pas dans le répertoire actuel ni dans un répertoire de la variable d'environnement PATH. Le pilote peut être téléchargé à l'adresse https://github.com/mozilla/geckodriver/releases .

En utilisant:

  • Serveur Selenium 2.53.1
  • Firefox 48
  • DLL bêta de Selenium 3
  • Fenêtre 10

Exemple de code 1

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         Driver = new FirefoxDriver();
    }

Aussi tenté le ci-dessous:

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         FirefoxDriverServices service = FirefoxDriverService.CreateDefaultService();
         service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
         FirefoxOptions options = new FirefoxOptions();
         TimeSpan time = TimeSpan.FromSeconds(10);
         Driver = new FirefoxDriver(service, options, time);
    }

Toute aide ou idée sur la raison pour laquelle le code ne détectera toujours pas ce pilote serait grandement appréciée.

22
SeanS

Essayez de mettre le geckodriver.exe dans votre chemin: C:\Utilisateurs\Votre Nom\Documents\Visual Studio 2013\Projets\seleniump\seleniump\bin\Debug

vous pouvez trouver geckodriver.exe à ce lien:

https://github.com/mozilla/geckodriver/releases

25
vdus

Installez le paquet Selenium.Firefox.Webdriver NuGet.

Cela copiera geckodriver.exe dans le dossier bin.

17
Hans Vonn

Cette solution peut vous aider à résoudre le problème: (Cela m'a néanmoins aidé)

public class TestResult {

    private IWebDriver driver;
    private StringBuilder verificationErrors;
    private string baseURL;
    private bool acceptNextAlert = true;

    [TestInitialize]
    public void SetupTest() {
        FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\geckodriver", "geckodriver.exe");
        service.Port = 64444;
        service.FirefoxBinaryPath = @"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
        driver = new FirefoxDriver(service);
        baseURL = "http://localhost:49539";
        verificationErrors = new StringBuilder();
    }
}
7
Angus Wu

Si vous incluez le fichier geckodriver.exe dans votre projet et que vous le copiez dans votre répertoire cible lors de la compilation, le WebDriver fonctionne comme dans les versions précédentes. 

4
Chalmette

Je voudrais essayer ceci:

  1. Premièrement, assurez-vous que votre projet C # exécute la même version du framework .NET que les bibliothèques du pilote client (lorsque vous les téléchargez à partir de Selenium HQ, vous devez voir la version du framework sur laquelle ils reposent). En tant que version 3.5 et 4.0 du 15/09/2017, je devais rétrograder mon projet C # vers .NET 4.0 pour utiliser les bibliothèques du pilote client 4.0.

  2. Dans votre code, lors de la création du service de pilote Firefox, assurez-vous de spécifier explicitement le chemin d'accès à l'emplacement de votre geckodriver.exe. Voyez comment j'ai ajouté un paramètre de chemin à votre appel à FirefoxDriverService.CreateDefaultService:

    using OpenQA.Selenium.Firefox;
    
    public static class FirefoxInitialise
    {
      private static IWebDriver Driver{get; set;}
      public static IWebDriver Init()
      {
       // I'm assuming your geckodriver.exe is located there:
       // @"C:\MyGeckoDriverExePath\geckodriver.exe"
       FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\MyGeckoDriverExePath\");
       service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe"; // May not be necessary
       FirefoxOptions options = new FirefoxOptions();
       TimeSpan time = TimeSpan.FromSeconds(10);
       Driver = new FirefoxDriver(service, options, time);
       return Driver;
     }
    }
    

So you can use :

IWebDriver driver = FirefoxInitialise.Init();
1
Fabien Teulieres

Si vous avez l'exécutable dans la variable d'environnement de chemin d'accès, cela signifie probablement qu'il n'est pas autorisé à y accéder. Pour contourner le problème, essayez d'exécuter Visual Studio en tant qu'administrateur.

Ou vous pouvez le déplacer quelque part qu'il ait la permission. Par exemple:

var service = FirefoxDriverService.CreateDefaultService(@"D:\tmp\Binaries");
service.FirefoxBinaryPath = FirefoxBinary;

var options = new FirefoxOptions();
options.SetPreference("browser.private.browsing.autostart", true);

_driver = new FirefoxDriver(service, options, TimeSpan.FromSeconds(30));

Là je mets les binaires dans D:\tmp\Binaries\ et le spécifiai dans le code pour vérifier le geckodriver.

0
Syakur Rahman

J'ai continué à avoir cette erreur aussi et la seule chose que je pouvais faire pour la réparer enfin (je ne suis pas sûr que ce soit la meilleure réponse pour tous ceux qui ont ce problème) est d'avoir placé le geckodriver.exe dans mon répertoire principal de la bibliothèque, puis j'ai ouvert webdriver.py:

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Selenium/webdriver/firefox/webdriver.py

trouvé la ligne où il est écrit: executable_path="geckodriver", firefox_options=None,

et l'a changé pour:

executable_path="/Library/geckodriver", firefox_options=None

0
Milena Paz

Cette solution a fonctionné pour moi pour VS2017. Juste copié le geckodriver.exe dans mon dossier de projet comme ceci:

C:\Users\pedne\Desktop\C #\FirstSolution\FirstSolution\bin\Debug

0
PrashantMP

J'avais un problème avec Visual Studio 2017 où la construction échouait, car elle recherchait l'exécutif de geckodriver dans un répertoire inexistant. Je l'avais aussi ajouté en utilisant Nuget Pack Manager. Ce que j’ai trouvé est dans Visual Studio-> Projet-> Propriétés-> Build it fonctionne si vous construisez la construction indépendamment de l’architecture: La cible de la plate-forme est N'importe quel processeur et laissez les autres cases à cocher (Préférer 32 bits, Autoriser le code non sécurisé, Optimiser le code) tout décoché ou juste coché Préférez 32 bits (qui est la valeur par défaut sur mon système) . Btw: mon application était une application console .NET Framework 4.5.2

0
Scott Maretick