selenium mit Java – Der Pfad zur ausführbaren Treiberdatei muss durch die Systemeigenschaft webdriver.gecko.driver festgelegt werden

Ich versuche Mozilla zu starten, aber ich erhalte immer noch diesen Fehler:

Ausnahme im Thread “main” java.lang.IllegalStateException: Der Pfad zur ausführbaren Datei des Treibers muss durch die Systemeigenschaft webdriver.gecko.driver festgelegt werden. Weitere Informationen finden Sie unter https://github.com/mozilla/geckodriver . Die neueste Version kann von https://github.com/mozilla/geckodriver/releases heruntergeladen werden

Ich benutze seleniumium 3.0.01 Beta Version und Mozilla 45 . Ich habe es auch mit Mozilla 47 versucht. aber immer noch das Gleiche.

Die seleniumium geckodriver versuchen, die geckodriver ausführbare Datei vom System PATH . Sie müssen das Verzeichnis mit der ausführbaren Datei zum Systempfad hinzufügen.

  • Auf Unix- Systemen können Sie Folgendes tun, um sie an den Suchpfad Ihres Systems anzuhängen, wenn Sie eine bash-kompatible Shell verwenden:

     export PATH=$PATH:/path/to/geckodriver 
  • Unter Windows müssen Sie die Path-Systemvariable aktualisieren, um der ausführbaren Datei den vollständigen Verzeichnispfad hinzuzufügen. Das Prinzip ist das gleiche wie bei Unix.

Die untenstehende Konfiguration für den Start des neuesten Firefox unter Verwendung einer Programmiersprache ist für seleniumium2 anwendbar, um Marionette explizit zu aktivieren. Ab seleniumium 3.0 und höher sollten Sie nichts mehr tun müssen, um Marionette zu verwenden, da es standardmäßig aktiviert ist.

Um Marionette in Ihren Tests zu verwenden, müssen Sie Ihre gewünschten Fähigkeiten aktualisieren, um sie zu verwenden.

Java :

Als Ausnahme wird klar gesagt, dass Sie die neueste geckodriver.exe von hier herunterladen geckodriver.exe und den heruntergeladenen geckodriver.exe Pfad, wo er in Ihrem Computer vorhanden ist, als Systemeigenschaft mit der Variablen webdriver.gecko.driver vor dem Initiieren des marionette-Treibers und dem Starten von firefox wie webdriver.gecko.driver :

 //if you didn't update the Path system variable to add the full directory path to the executable as above mentioned then doing this directly through code System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe"); //Now you can Initialize marionette driver to launch firefox DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); WebDriver driver = new MarionetteDriver(capabilities); 

Und für seleniumium3 verwenden als: –

 WebDriver driver = new FirefoxDriver(); 

Wenn Sie immer noch in Schwierigkeiten sind, folgen Sie auch diesem Link, der Ihnen helfen würde, Ihr Problem zu lösen

.NET :

 var driver = new FirefoxDriver(new FirefoxOptions()); 

Python :

 from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities caps = DesiredCapabilities.FIREFOX # Tell the Python bindings to use Marionette. # This will not be necessary in the future, # when seleniumium will auto-detect what remote end # it is talking to. caps["marionette"] = True # Path to Firefox DevEdition or Nightly. # Firefox 47 (stable) is currently not supported, # and may give you a suboptimal experience. # # On Mac OS you must point to the binary executable # inside the application package, such as # /Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin caps["binary"] = "/usr/bin/firefox" driver = webdriver.Firefox(capabilities=caps) 

Ruby :

 # seleniumium 3 uses Marionette by default when firefox is specified # Set Marionette in seleniumium 2 by directly passing marionette: true # You might need to specify an alternate path for the desired version of Firefox seleniumium::WebDriver::Firefox::Binary.path = "/path/to/firefox" driver = seleniumium::WebDriver.for :firefox, marionette: true 

JavaScript (Node.js) :

 const webdriver = require('selenium-webdriver'); const Capabilities = require('selenium-webdriver/lib/capabilities').Capabilities; var capabilities = Capabilities.firefox(); // Tell the Node.js bindings to use Marionette. // This will not be necessary in the future, // when seleniumium will auto-detect what remote end // it is talking to. capabilities.set('marionette', true); var driver = new webdriver.Builder().withCapabilities(capabilities).build(); 

Verwenden von RemoteWebDriver

Wenn Sie RemoteWebDriver in einer beliebigen Sprache verwenden RemoteWebDriver , können Sie Marionette in seleniumium Grid verwenden.

Python :

 caps = DesiredCapabilities.FIREFOX # Tell the Python bindings to use Marionette. # This will not be necessary in the future, # when seleniumium will auto-detect what remote end # it is talking to. caps["marionette"] = True driver = webdriver.Firefox(capabilities=caps) 

Ruby :

 # seleniumium 3 uses Marionette by default when firefox is specified # Set Marionette in seleniumium 2 by using the Capabilities class # You might need to specify an alternate path for the desired version of Firefox caps = seleniumium::WebDriver::Remote::Capabilities.firefox marionette: true, firefox_binary: "/path/to/firefox" driver = seleniumium::WebDriver.for :remote, desired_capabilities: caps 

Java :

 DesiredCapabilities capabilities = DesiredCapabilities.firefox(); // Tell the Java bindings to use Marionette. // This will not be necessary in the future, // when seleniumium will auto-detect what remote end // it is talking to. capabilities.setCapability("marionette", true); WebDriver driver = new RemoteWebDriver(capabilities); 

.NETZ

 DesiredCapabilities capabilities = DesiredCapabilities.Firefox(); // Tell the .NET bindings to use Marionette. // This will not be necessary in the future, // when seleniumium will auto-detect what remote end // it is talking to. capabilities.SetCapability("marionette", true); var driver = new RemoteWebDriver(capabilities); 

Hinweis: Genau wie die anderen Treiber, die seleniumium von anderen Browser-Anbietern zur Verfügung gestellt hat, hat Mozilla nun eine ausführbare Datei veröffentlicht, die neben dem Browser läuft. Befolgen Sie dies für weitere Details.

Sie können die neueste geckodriver ausführbare Datei herunterladen, um das neueste Firefox von hier aus zu unterstützen

  1. Laden Sie Gecko-Treiber von der selenehq-Website herunter (Jetzt ist es auf GitHub und Sie können es von hier herunterladen).
    1. Sie werden eine Zip (oder tar.gz) haben, also extrahieren Sie es.
    2. Nach der Extraktion haben Sie geckodriver.exe Datei (geeignete ausführbare Datei in Linux).
    3. Erstellen Sie Ordner in C: seleniumiumGecko (oder entsprechend)
    4. Kopieren und Einfügen geckodriver.exe zu seleniumiumGecko
    5. Stellen Sie den Pfad für den Gecko-Treiber wie folgt ein

.

 System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.10.0-win64\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); 

seleniumium WebDriver Java-Code:

Laden Sie Gecko Driver von https://github.com/mozilla/geckodriver/releases basierend auf Ihrer Plattform herunter. Entpacken Sie es an einem Ort Ihrer Wahl. Schreibe den folgenden Code:

 System.setProperty("webdriver.gecko.driver", "D:/geckodriver-v0.16.1-win64/geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("https://www.lynda.com/seleniumium-tutorials/Mastering-seleniumium-Testing-Tools/521207-2.html"); 

Jeder Treiberdienst in selenium ruft den ähnlichen Code (folgend ist der firefoxspezifische Code) auf, während er das Treiberobjekt erstellt

  @Override protected File findDefaultExecutable() { return findExecutable( "geckodriver", GECKO_DRIVER_EXE_PROPERTY, "https://github.com/mozilla/geckodriver", "https://github.com/mozilla/geckodriver/releases"); } 

Jetzt müssen Sie für den Treiber, den Sie verwenden möchten, die Systemeigenschaft mit dem Wert des Pfads zur ausführbaren Treiberdatei festlegen.

für firefox GECKO_DRIVER_EXE_PROPERTY = “webdriver.gecko.driver” und dies kann vor dem Erstellen des Treiberobjekts wie folgt eingestellt werden

 System.setProperty("webdriver.gecko.driver", "./libs/geckodriver.exe"); WebDriver driver = new FirefoxDriver();