web-dev-qa-db-de.com

Firefox-Binärdatei kann in PATH nicht gefunden werden. Stellen Sie sicher, dass Firefox installiert ist

In Selenium Grid versuche ich ein einfaches Programm auszuführen und bekomme Cannot find firefox binary in PATH obwohl ich den binären Pfad in meinem Code hinzugefügt habe.
Mein Code und der Fehler sind unten angegeben. Brauche bitte Hilfe. Danke im Voraus.


Code

package Sample;
import Java.net.MalformedURLException;
import Java.net.URL;
import org.openqa.Selenium.Platform;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.remote.DesiredCapabilities;
import org.openqa.Selenium.remote.RemoteWebDriver;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
public class sample1 {
     WebDriver driver;
     String  BaseURL,NodeURL;
@BeforeTest
  public void beforeTest() throws MalformedURLException {
     BaseURL="www.google.com";
     NodeURL="http://192.168.10.162:5566/wd/hub";
     DesiredCapabilities capa =DesiredCapabilities.firefox();
     capa.setBrowserName("firefox");
     capa.setCapability("binary", "C:\\Users\\praveenraj.d\\AppData\\Local\\Mozilla Firefox\\firefox.exe");
     capa.setPlatform(Platform.ANY);
     driver=new RemoteWebDriver(new URL(NodeURL),capa);
  }
   @Test
  public void f() throws InterruptedException {
      driver.get(BaseURL);
      System.out.println(driver.getTitle());
      Thread.sleep(50000);
  }
  @AfterTest
  public void afterTest() {
      driver.quit();
  }
 }


Error

[TestNG] Running:
  C:\Users\praveenraj.d\AppData\Local\Temp\testng-Eclipse-1233453386\testng-customsuite.xml

FAILED CONFIGURATION: @BeforeTest beforeTest
org.openqa.Selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: WIN8
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
System info: Host: 'IN-IF-WS1-0154', ip: '192.168.10.162', os.name: 'Windows 8', os.Arch: 'AMD64', os.version: '6.2', Java.version: '1.7.0_07'
Driver info: driver.version: FirefoxDriver
Command duration or timeout: 97 milliseconds
Build info: version: '2.31.0', revision: '1bd294d', time: '2013-02-27 20:53:56'
System info: os.name: 'Windows 8', os.Arch: 'x86', os.version: '6.2', Java.version: '1.7.0_13'
Driver info: org.openqa.Selenium.remote.RemoteWebDriver
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:187)
    at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:145)
    at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:554)
    at org.openqa.Selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.Java:216)
    at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:111)
    at org.openqa.Selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.Java:129)
    at Sample.sample1.beforeTest(sample1.Java:28)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at Java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.Java:84)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.Java:564)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.Java:213)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.Java:138)
    at org.testng.TestRunner.beforeRun(TestRunner.Java:641)
    at org.testng.TestRunner.run(TestRunner.Java:609)
    at org.testng.SuiteRunner.runTest(SuiteRunner.Java:335)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.Java:330)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.Java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.Java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.Java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.Java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.Java:1224)
    at org.testng.TestNG.runSuitesLocally(TestNG.Java:1149)
    at org.testng.TestNG.run(TestNG.Java:1057)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.Java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.Java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.Java:175)
Caused by: org.openqa.Selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: WIN8
Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
System info: Host: 'IN-IF-WS1-0154', ip: '192.168.10.162', os.name: 'Windows 8', os.Arch: 'AMD64', os.version: '6.2', Java.version: '1.7.0_07'
Driver info: driver.version: FirefoxDriver
Build info: version: '2.31.0', revision: '1bd294d', time: '2013-02-27 20:53:56'
System info: os.name: 'Windows 8', os.Arch: 'x86', os.version: '6.2', Java.version: '1.7.0_13'
Driver info: driver.version: FirefoxDriver
    at org.openqa.Selenium.firefox.internal.Executable.<init>(Executable.Java:72)
    at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:59)
    at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:55)
    at org.openqa.Selenium.firefox.FirefoxDriver.getBinary(FirefoxDriver.Java:182)
    at org.openqa.Selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.Java:107)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at Java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.Selenium.remote.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.Java:62)
    at org.openqa.Selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.Java:56)
    at org.openqa.Selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.Java:216)
    at org.openqa.Selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.Java:1)
    at Java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at Java.util.concurrent.FutureTask.run(Unknown Source)
    at org.openqa.Selenium.remote.server.DefaultSession$1.run(DefaultSession.Java:170)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)

SKIPPED CONFIGURATION: @AfterTest afterTest
SKIPPED: f

===============================================
    Default test
    Tests run: 1, Failures: 0, Skips: 1
    Configuration Failures: 1, Skips: 1
===============================================


===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 1
Configuration Failures: 1, Skips: 1
===============================================

[TestNG] Time taken by [email protected]: 27 ms
[TestNG] Time taken by [email protected]: 22 ms
[TestNG] Time taken by [email protected]: 6 ms
[TestNG] Time taken by [email protected]: 6 ms
[TestNG] Time taken by [email protected]: 6 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 4 ms
29
user2307574
File pathToBinary = new File("C:\\user\\Programme\\FirefoxPortable\\App\\Firefox\\firefox.exe");
FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();       
WebDriver driver = new FirefoxDriver(ffBinary,firefoxProfile);
31
Achille

Eine andere Möglichkeit besteht darin, den Server und nicht den Testclient zu konfigurieren.

Konfigurieren Sie den Slave-Knotendienst so, dass er weiß, wo sich der Firefox befindet. Der Installationsort kann sich von Knoten zu Knoten ändern oder es müssen sogar mehrere Dienste auf einem Knoten ausgeführt werden, um den Zugriff auf verschiedene Versionen von FF zu unterstützen.

Java -jar "Selenium-server-standalone-2.2.0.jar"
 -Dwebdriver.firefox.bin="C:\FirefoxCollection\Mozilla Firefox 36.0\firefox.exe"
20
Greg Domjan

Stellen Sie sicher, dass Firefox an einem Standardspeicherort installiert werden muss, z. B. -> (c:/Programme (x86)/Mozilla Firefox OR c:/Programme/Mozilla Firefox, note: at Die Zeit der Firefox-Installation ändert den Pfad nicht. Lassen Sie ihn daher im Standardpfad installieren) Wenn Firefox an einem anderen Ort installiert ist, zeigt Selenium diesen Fehler an.

Wenn Sie Ihren Firefox in der Umgebungsvariablen Systems (Windows) festgelegt haben, entfernen Sie ihn oder aktualisieren Sie ihn mit dem neuen Firefox-Versionspfad.

Wenn Sie Firefox an einem anderen Ort verwenden möchten, verwenden Sie den folgenden Code: -

Da FirefoxProfile nicht mehr unterstützt wird, müssen wir FirefoxOptions wie folgt verwenden:

Neuer Code:

File pathBinary = new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);   
DesiredCapabilities desired = DesiredCapabilities.firefox();
FirefoxOptions options = new FirefoxOptions();
desired.setCapability(FirefoxOptions.FIREFOX_OPTIONS, options.setBinary(firefoxBinary));

Der vollständige Arbeitscode des obigen Codes lautet wie folgt:

System.setProperty("webdriver.gecko.driver","D:\\Workspace\\demoproject\\src\\lib\\geckodriver.exe");
File pathBinary = new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);   
DesiredCapabilities desired = DesiredCapabilities.firefox();
FirefoxOptions options = new FirefoxOptions();
desired.setCapability(FirefoxOptions.FIREFOX_OPTIONS, options.setBinary(firefoxBinary));
WebDriver driver = new FirefoxDriver(options);
driver.get("https://www.google.co.in/");

Laden Sie den Geckodriver für Firefox von folgender URL herunter:

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

Alter Code, der für alte Versionen von Selenium-Gläsern funktioniert

File pathBinary = new File("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();       
WebDriver driver = new FirefoxDriver(firefoxBinary, firefoxProfile);
15
Shubham Jain

Haben Sie Ihrem Pfad Firefox hinzugefügt, nachdem Sie den Selenium-Server gestartet haben? Wenn dies der Fall ist, wird Selen weiterhin den alten Pfad verwenden. Die Lösung ist Abriss & Neustart von Selenium, damit die Umgebungsvariable aktualisierter Pfad verwendet wird.

Um zu überprüfen, ob Firefox in Ihrem Pfad korrekt hinzugefügt wurde, können Sie einfach ein Befehlszeilenterminal "cmd" starten und dort "Firefox" + EINGABE eingeben. Wenn Firefox startet, ist alles in Ordnung und ein Neustart des Selenium-Servers sollte das Problem beheben.

5
donfuxx

Ich hatte das gleiche Problem in C # mit 64-Bit-Windows und dem 64-Bit-Firefox-Browser, der auf Selenium nicht zu funktionieren scheint. Wenn Sie den 64-Bit-Browser verwenden, probieren Sie den 32-Bit-Browser aus.

Überraschenderweise läuft der 32-Bit-Firefox-Browser unter 64-Bit-Windows einwandfrei.

Bearbeitet, um die Absicht meines Beitrags zu verdeutlichen.

5
masospaghetti

Ich hatte gerade dieses Problem, ohne den Pfad zu ändern.

Mein PC ist Win7, 64-Bit-System. Wenn Sie auch ein 64-Bit-System verwenden, möchten Sie möglicherweise Folgendes versuchen:

  1. deinstalliere deinen aktuellen Firefox.
  2. installieren Sie den neuen Firefox unter "C:\Programme (x86)\Mozilla Firefox \".

Es muss sich unter "Program Files (x86)" NICHT "Program Files" befinden

Hoffe es kann helfen.

2
Harry Chu

Ich habe die Antwort auf diese Frage hier nicht gesehen. Der Trick besteht darin, die BrowserExecutableLocation-Eigenschaft für eine FirefoxOptions-Instanz festzulegen und diese an den Treiberkonstruktor zu übergeben:

        var opt = new FirefoxOptions
        {
            BrowserExecutableLocation = @"c:\program files\mozilla firefox\firefox.exe"
        };
        var driver = new FirefoxDriver(opt);
2
MSC

Sie müssen gecko driver Hinzufügen, wenn Sie firefox v50 Oder höher verwenden.

Verwenden Sie den folgenden Beispielcode:

File pathToBinary = new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();
System.setProperty("webdriver.gecko.driver","C:\\Users\\Downloads\\Selenium-Java-3.0.1\\geckodriver.exe");       
WebDriver driver = new FirefoxDriver(ffBinary,firefoxProfile);
2
AZHAR WADIKAR
Java -jar Selenium-server-standalone-2.53.1.jar -Dwebdriver.firefox.bin="C:\Program Files (x86)\Mozilla Firefox\firefox.exe"

Lege die Selenium-JAR-Datei auf den Desktop, gehe zu cmd und führe den obigen Befehl aus.

1

Am einfachsten ist es, wenn Ihre Grid-Knoten den Firefox-Binärpfad als Teil der Knotenkonfiguration registrieren. Es verwendet die gleichen Funktionen wie der Client, ermöglicht es Ihnen jedoch, den Browser nach Namen auszuwählen und ihn vom Knoten finden zu lassen.

Bitte beachten Sie auch, dass die gewünschte Funktion "firefox_binary" und nicht "binary" ist. Die vollständige Liste der Firefox-Funktionen finden Sie auf dieser Wiki-Seite:

https://code.google.com/p/Selenium/wiki/DesiredCapabilities

1
nirvdrum

Dieses Problem kann an der Inkompatibilität des Firefox-Treibers und Ihrer Firefox-Browserversion liegen. Laden Sie die neueste Version des Firefox-Treibers herunter, die mit der aktualisierten Firefox-Browserversion kompatibel ist.

1
K.Krishnakanth

Ich habe auch das gleiche Problem auf Windows 10-64-Bit-Betriebssystem.

Wenn ich firefox auf meinem PC installiert habe, lautet der Installationsort "C:\Programme\Mozilla Firefox\firefox.exe" anstelle von "C:\Programme (x86)\Mozilla Firefox", da das Betriebssystem 64-Bit ist.

Also kopiere ich einfach den "Mozilla Firefox" -Ordner in den "C:\Program Files (x86)" -Ordner und führe Selenium-Skripte aus.

0
Pravin Jadhav

Dies ist auf den im Code verwendeten RemoteWebDriver zurückzuführen. Es wird versucht, den Firefox-Browser auf dem Knotencomputer aufzurufen. Wenn Sie in der Umgebungsvariablen "PATH" des Knotencomputers den binären Speicherort von Firefox angegeben haben, wird der Firefix-Browser beim Ausführen über Hub geöffnet.

0
Rakesh

Sie sollten die Umgebungsvariable ändern und den Pfad zu firefox.exe hinzufügen. Dasselbe könnte programmgesteuert geschehen Wie kann ich die PATH-Variable in der Anwendung Java unter Windows? einstellen/aktualisieren. Ich hatte das gleiche Problem unter Win8.

0
olyv