web-dev-qa-db-de.com

geckodriver.exe befindet sich nicht im aktuellen Verzeichnis oder Pfadvariablen, Selenium 2.53.1 + Firefox 48 + Selenium 3 Beta

Ich habe viele Fragen zu Selenium 2.53.1 und Firefox 47.0.1 gesehen, aber keine zu Selenium 3 Beta. Ich versuche, die neuen Gecko/Marionetten-Firefox-Web-Treiber zu verwenden, obwohl ich den Treiberstandort in habe; meinen Umgebungspfad, Firefox-Installationsordner in Programmen und den Laufwerksspeicherort in der Systemumgebung angeben, funktioniert es immer noch nicht richtig.

Error:

Die geckodriver.exe ist nicht im aktuellen Verzeichnis oder in einem Verzeichnis in der Umgebungsvariablen PATH vorhanden. Der Treiber kann unter https://github.com/mozilla/geckodriver/releases heruntergeladen werden.

Using:

  • Selen 2.53.1 Server
  • Firefox 48
  • Selenium 3 Beta DLLs
  • Fenster 10

Beispielcode 1

    using OpenQA.Selenium.Firefox;

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

         Driver = new FirefoxDriver();
    }

Auch versucht das unten:

    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);
    }

Jede Hilfe oder Einsicht, warum der Code diesen Treiber immer noch nicht erkennt, wäre sehr dankbar.

22
SeanS

Versuchen Sie, die Datei geckodriver.exe in Ihren Pfad einzufügen: C:\Benutzer\IhrName\Dokumente\Visual Studio 2013\Projekte\Seleniump\Seleniump\bin\Debug

sie finden geckodriver.exe unter diesem Link:

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

25
vdus

Installieren Sie das Paket Selenium.Firefox.Webdriver NuGet.

Dadurch wird geckodriver.exe in den Ordner bin kopiert.

17
Hans Vonn

Diese Lösung kann Ihnen helfen, ein Problem zu beheben: (Es hat mir jedoch geholfen)

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

Wenn Sie die Datei geckodriver.exe in Ihr Projekt aufnehmen und Sie beim Kompilieren in das Zielverzeichnis kopieren, funktioniert der Web-Treiber wie in früheren Versionen. 

4
Chalmette

Dies ist für denjenigen, der die Anfänger ist. Schreiben Sie die kurze Version unten nach diesem Beitrag :) Der einfachste Weg, Sie müssen zuerst alle Treiber herunterladen, welche Browser Sie verwenden, und alle Treiber in z. C:\Selenium\ und gehen Sie zu VisualStudio und fügen Sie von hier aus Selenium packages in den Bildern hinzu. Klicken Sie hier in der Konsole schreiben Sie diesen Code PM>Install-Package Selenium.WebDriver Danach kopieren Sie Ihr Treiberverzeichnis und geben Sie in der Windows-Registerkarte der Registerkarte Suche Variablen ein. Wählen Sie (Systemumgebung und Variablen bearbeiten) shown pic2. In diesem Fenster wird die Registerkarte advanced angezeigt. Klicken Sie auf Umgebungsvariablen. . hier haben Sie System variables Abschnitt find PATH or Path Variable und bearbeiten Sie sie. Seien Sie vorsichtig don't delete it!! Klicken Sie auf new - fügen Sie das Verzeichnis der Treiber ein und klicken Sie auf OK. Starten Sie Ihr VS - Programm neu und überprüfen Sie es. Danach müssen Sie den Director-Pfad nicht wie Ihren Constructor hinzufügen 

IWebDriver driver2 = new InternetExplorerDriver(@"C:\Selenium"); 

Vergessen Sie nicht, Dateien zu importieren. 

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;

Für mehr fortgeschrittene IT-Leute.

  1. In Umgebungspfad hinzufügen Ihr Treiberverzeichnis.
  2. VisualStudio Installieren Sie Selenium mithilfe des NuGet-Paketmanagers im Konsolenmodus oder wie es Ihnen gefällt .

    PM> Install-Package Selenium.WebDriver

  3. vS neu starten.
1
Said

Ich würde das versuchen:

  1. Stellen Sie zunächst sicher, dass in Ihrem C # -Projekt die gleiche .NET Framework-Version wie die Client Driver-Bibliotheken ausgeführt wird (wenn Sie sie vom Selenium HQ herunterladen, sollten Sie die Framework-Version sehen, auf der sie basieren). Ich habe 3.5 und 4.0 per 15.09.2017, daher musste ich mein C # -Projekt auf .NET 4.0 herabstufen, um die 4.0-Clienttreiberbibliotheken verwenden zu können.

  2. Stellen Sie in Ihrem Code sicher, dass Sie beim Erstellen des Firefox-Treiberdiensts explizit den Pfad angeben, an dem sich Ihre geckodriver.exe befindet. Sehen Sie, wie ich Ihrem Aufruf einen Pfadparameter zu FirefoxDriverService.CreateDefaultService hinzugefügt habe:

    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

Wenn sich die ausführbare Datei in einer Pfadumgebungsvariablen befindet, bedeutet dies wahrscheinlich, dass sie nicht berechtigt ist, darauf zuzugreifen. Versuchen Sie als Problemumgehung, Visual Studio als Administrator auszuführen.

Oder Sie könnten es an einen Ort verschieben, an dem es die Erlaubnis hat. Z.B:

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));

Dort habe ich die Binaries in D:\tmp\Binaries\ gestellt und im Code angegeben, um den Geckodriver dort zu überprüfen.

0
Syakur Rahman

Ich erhielt auch diese Fehlermeldung und das einzige, was ich tun konnte, um es endgültig zu beheben (nicht sicher, ob es die beste Antwort für alle ist, die dieses Problem haben), war, dass ich geckodriver.exe in meinem Hauptverzeichnis der Bibliothek abgelegt hatte. Dann webdriver.py:

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

fand die Zeile, in der es steht: executable_path="geckodriver", firefox_options=None,

und änderte es in:

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

0
Milena Paz

Diese Lösung hat für VS2017 funktioniert. Die geckodriver.exe wurde einfach wie folgt in meinen Projektordner kopiert:

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

0
PrashantMP

Klicken Sie in Ihrem Projekt auf Extras -> Nuget Package Manager -> NuGet-Pakete für Lösung verwalten .... Wählen Sie im geöffneten Fenster Selenium.FireFox.WebDriver und Ihren Projektnamen aus und klicken Sie auf Installieren.

Dies ist die einfachere Form, um den Treiber in Ihr Selenium-Projekt einzufügen.

0
Diego Montero

Ich hatte ein Problem mit Visual Studio 2017, bei dem der Build fehlschlug, weil in einem nicht vorhandenen Verzeichnis nach dem geckodriver exec gesucht wurde. Ich hatte es auch mit Nuget Pack Manager hinzugefügt. Was ich gefunden habe, war in Visual Studio-> Projekt-> Eigenschaften-> Build. Es funktioniert, wenn Sie den Build von der Architektur unabhängig machen: Plattformziel ist Any CPU. Entweder die anderen Kontrollkästchen (32-Bit bevorzugen, Unsicheren Code zulassen, Code optimieren) Alle sind nicht aktiviert oder haben die Option "Vorzug 32-Bit" (dies ist die Standardeinstellung auf meinem System) aktiviert. Btw: Meine Anwendung war eine .NET-Konsolenanwendung

0
Scott Maretick