webentwicklung-frage-antwort-db.com.de

Firefox-Binärcode kann nicht in PATH gefunden werden. Stellen Sie sicher, dass Firefox installiert ist. OS scheint zu sein: VISTA

Ich kann mein Skript nicht in einem der Browser ausführen. Unten ist der Fehler, den ich für Firefox bekomme. Der Ort, an dem Firefox installiert ist, ist korrekt. Weiß nicht was falsch ist.

Ich verwende Firefox 15. Selenium Java 2.2.0 und Eclipse Juno

Mein Testfall ist unten angegeben:

import static org.junit.Assert.*;
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import org.openqa.Selenium.By; 
import org.openqa.Selenium.WebDriver; 
import org.openqa.Selenium.firefox.FirefoxDriver;  
import org.openqa.Selenium.firefox.FirefoxProfile;

public class FirstTest {
private WebDriver _driver;
@Before
 public void setUp() throws Exception {
System.setProperty("webdriver.firefox.driver","C:\\Program Files\\Mozilla Firefox15\\Firefox.exe");
FirefoxProfile firefoxProfile = new FirefoxProfile();
_driver = new FirefoxDriver(firefoxProfile);
}

@Test 
public void Login() throws Exception {
_driver.get("https://www.google.co.in/");
assertEquals("Google", _driver.getTitle());
_driver.findElement(By.id("lst-ib")).clear();
_driver.findElement(By.id("lst-ib")).sendKeys("Selenium");
_driver.findElement(By.name("btnG")).click();
_driver.findElement(By.linkText("Selenium - Web Browser Automation")).click();
assertEquals(" ", _driver.getTitle());
assertEquals("Selenium - Web Browser Automation", _driver.getTitle());
}
@After public void tearDown() throws Exception {
_driver.quit();
}
}

Unten ist der Fehler, den ich bekomme:

org.openqa.Selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: Vista
Build info: version: '2.20.0', revision: '16008', time: '2012-02-27 19:03:59'
System info: os.name: 'Windows 7', os.Arch: 'x86', os.version: '6.1', Java.version: '1.6.0_26'
Driver info: driver.version: FirefoxDriver
    at org.openqa.Selenium.firefox.internal.Executable.<init>(Executable.Java:52)
    at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:56)
    at org.openqa.Selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.Java:52)
    at org.openqa.Selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.Java:88)
    at FirstTest.setUp(FirstTest.Java:16)
    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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.Java:45)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.Java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.Java:42)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.Java:27)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.Java:30)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.Java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:68)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.Java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.Java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.Java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.Java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.Java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.Java:300)
    at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.Java:50)
    at org.Eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.Java:38)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:467)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)

Java.lang.NullPointerException
    at FirstTest.tearDown(FirstTest.Java:31)
    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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.Java:45)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.Java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.Java:42)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.Java:36)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.Java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:68)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.Java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.Java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.Java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.Java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.Java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.Java:300)
    at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.Java:50)
    at org.Eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.Java:38)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:467)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
    at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)
19
user2045704
  1. Befehlszeile öffnen (Start -> Ausführen -> "cmd" eingeben)
  2. typ PATH 
  3. Stellen Sie sicher, dass Sie hier C:\Program Files\Mozilla Firefox15\Firefox.exe geschrieben sehen.

Es wird wahrscheinlich nicht hier sein - denn das sagt der Fehler. Wie man es repariert?

  1. Klicken Sie auf Start
  2. Klicken Sie mit der rechten Maustaste auf "Computer" und klicken Sie auf "Eigenschaften".
  3. Im linken Menü Wählen Sie "Erweiterte Systemeinstellungen".
  4. Gehen Sie auf die Registerkarte "Erweitert" und klicken Sie auf "Umgebungsvariablen ...".
  5. Wählen Sie im folgenden Fenster "Pfad" und klicken Sie auf "Bearbeiten ..." (Administratorrechte erforderlich).
  6. Fügen Sie am Ende den gewünschten Pfad hinzu, getrennt durch Semikolon
  7. Möglicher Neustart des Computers erforderlich

Es hilft nicht, den Konstruktor so zu ändern:

File pathToBinary = new File("C:\\Program Files\\Mozilla Firefox15\\Firefox.exe");
FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();
FirefoxDriver _driver = new FirefoxDriver(ffBinary,firefoxProfile);
20
Pavel Janicek

achtung, wenn der Pfad zum Browser Platz hat (zB "...\Programme (x86) ..."), müssen Sie den Wert von param in doppelte Anführungszeichen setzen.

Beispiel:

-Dwebdriver.firefox.bin="D:\Program Files (x86)\Mozilla Firefox\firefox.exe"

Alles wurde erfolgreich ausgeführt, wenn doppelte Anführungszeichen hinzugefügt wurden.

3
Kosmos

Aus irgendeinem Grund funktionierte das Hinzufügen der Umgebungsvariable für mich nicht.

Ich konnte in der Konfiguration des Befehlszeilenknotens einen Pfad zu Firefox angeben, wie auf dieser page (grid2) beschrieben.

-browser “browserName=firefox,version=3.6,firefox_binary=c:\Program Files\Mozilla Firefox\firefox.exe ,maxInstances=3, platform=WINDOWS”
2
DevDave

Ich hatte auch das gleiche Problem. Zum Schluss habe ich es aufgelöst, indem ich den binären Wert wie unten gezeigt in den Fähigkeiten eingestellt habe. Zur Laufzeit wird dieser Wert verwendet, damit festgelegt werden muss.

DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setCapability("platform", Platform.ANY);
capability.setCapability("binary", "/ms/dist/fsf/PROJ/firefox/16.0.0/bin/firefox"); //for linux

//capability.setCapability("binary", "C:\\Program Files\\Mozilla  Firefox\\msfirefox.exe"); //for windows                
WebDriver    currentDriver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);

Und du bist fertig !!! Viel Spaß beim Codieren :)

2

Am einfachsten ist es, den folgenden Code zu verwenden, bevor Sie Ihren Treiber definieren.

System.setProperty("webdriver.firefox.bin",
                    "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
2
Purus

sie müssen während der Ausführung des Programms das Argument vm hinzufügen. Das sollte so sein 

-Dwebdriver.firefox.bin=/custom/path/of/firefox/exe

In IntelliJ IDE viel einfacher Gehen Sie zu Optionen → Optionen bearbeiten - In VM und fügen Sie die obigen Optionen hinzu.

IntelliJ Run Configurations

Eclipse hat auch die Möglichkeit, während der Ausführung vm-Argumente anzugeben. Auf diese Weise verwende ich tragbaren Firefox mit Selenium.

1
arulraj.net

Dieser Code hat einfach für mich funktioniert

System.setProperty("webdriver.firefox.bin", "C:\\Program Files\\Mozilla Firefox 54\\firefox.exe");
String Firefoxdriverpath = "C:\\Users\\Hp\\Downloads\\geckodriver-v0.18.0-win64\\geckodriver.exe";
System.setProperty("webdriver.gecko.driver", Firefoxdriverpath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver = new FirefoxDriver(capabilities);
0
Mpathak

Dieses Problem hatte ich, als ich mein Projekt von einem Computer auf einen anderen umstellte.

0
user890332

Diese Fehlermeldung wurde beim Ausführen von Tests in Visual Studio angezeigt: Firefox ließ sich einfach nicht laden und ich erhielt die Fehlermeldung von OP.

Ich habe Firefox manuell geöffnet und festgestellt, dass es sich selbst aktualisieren musste (vor dem Laden). Als ich fertig war, sah ich die Testsuite erneut durch und Firefox zeigte sich gut, die Tests wurden ordnungsgemäß ausgeführt. Wenn Sie diese Fehlermeldung plötzlich erhalten, probieren Sie diese Antwort aus, bevor Sie etwas auf Ihrem Computer aktualisieren.

0
Justa
File pathBinary = new File("Firefox.exe location");
FirefoxBinary ffBinary = new FirefoxBinary(pathBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();
FirefoxDriver driver = new FirefoxDriver(ffBinary,firefoxProfile);

Sie müssen die Binärdatei des Browsers hinzufügen

oder

Beste und dauerhafte Lösung: Fügen Sie den Umgebungsvariablen einfach den Speicherort von Firefox.exe hinzu

0
dheeraj reddy

Ich stand auch vor dem gleichen Problem und verbrachte mehr als eine Woche, um das Problem zu beheben. Ein Neustart meiner Maschine schien das Problem behoben zu haben, jedoch nur vorübergehend. 

Es gab eine Lösung, um die maximale Anzahl der kurzlebigen Ports durch Bearbeiten der Registrierungsdatei zu erhöhen. Das schien das Problem aber auch nur vorübergehend behoben zu haben.

Irgendwann habe ich immer darüber nachgedacht, ob ich versucht habe, auf einen Treiber zuzugreifen, der nicht mehr verfügbar ist. Deshalb habe ich versucht anzurufen:

driver.quit()

Und erstellen Sie dann die Browser-Instanz neu, die mir nur Folgendes gab: SessionNotFoundException .

Ich erkannte jetzt, dass ich sowohl BEIDE System.setProperty als auch ffCapability.setCapability verwendet hatte, um den Pfad der Binärdatei festzulegen.

Ich habe dann nur mit System.setProperty => kein Glück dort versucht.

Nur ffCapability.setCapability => Voila !!! Bisher hat es gut funktioniert. Hoffentlich klappt es super, wenn ich morgen und am Tag danach und am Tag danach meine Skripte erneut ausführen möchte ... :)

Bottomline: Nur diese verwenden

ffCapability.setCapability("binary", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //for windows`

Ich hoffe es hilft!

0
user6376

Versuche dies:

System.setProperty("webdriver.gecko.driver", "geckodriver p");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver = new FirefoxDriver(capabilities);
0
Daniel

Für mich war es nur eine Frage der Änderung der Pfadvariablen: 'C:\Programme\Mozilla Firefox' anstelle von 'C:\Programme (x86)\Mozilla Firefox'

0
Eyal Sooliman