web-dev-qa-db-fra.com

Impossible de trouver le fichier binaire firefox dans PATH. Assurez-vous que Firefox est installé. OS semble être: VISTA

Je ne suis pas en mesure d'exécuter mon script dans aucun des navigateurs. Ci-dessous est l'erreur que je reçois pour Firefox. L'emplacement d'installation de Firefox est correct. Je ne sais pas ce qui ne va pas.

J'utilise Firefox 15. Selenium Java 2.2.0 et Eclipse Juno

Mon cas de test est donné ci-dessous:

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

Ci-dessous est l'erreur que je reçois:

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. Ouvrir la ligne de commande (Démarrer -> Exécuter -> tapez "cmd")
  2. tapez PATH 
  3. Vérifiez que vous pouvez voir ici écrit C:\Program Files\Mozilla Firefox15\Firefox.exe

Ce ne sera probablement pas ici - parce que c'est ce que dit l'erreur. Comment le réparer?

  1. Cliquez sur Démarrer
  2. Faites un clic droit sur "Ordinateur" et cliquez sur "Propriétés"
  3. Dans le menu de gauche, choisissez "Paramètres système avancés".
  4. Allez sur l'onglet "Avancé" et cliquez sur "Variables d'environnement ..."
  5. Dans la fenêtre ci-dessous, sélectionnez "Chemin" et cliquez sur "Modifier ..." (droits d'administrateur requis)
  6. Ajouter à la fin le chemin souhaité, séparé par un point-virgule
  7. Redémarrage possible de l'ordinateur nécessaire

Cela n'aide pas alors à changer le constructeur comme ceci:

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

attention, si le chemin d'accès au navigateur contient de l'espace (comme exemple "...\Program Files (x86) ..."), vous devez ajouter des guillemets à la valeur de param.

Exemple:

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

Tout a été exécuté avec succès lors de l'ajout de guillemets doubles.

3
Kosmos

Pour une raison quelconque, l'ajout de la variable d'environnement n'a pas fonctionné pour moi.

J'ai été en mesure de spécifier un chemin d'accès à Firefox dans la configuration du nœud de ligne de commande, comme décrit sur cette page (grid2).

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

Je souffrais aussi du même problème. Enfin, je l'ai résolu en définissant la valeur binaire en capacités comme indiqué ci-dessous. Au moment de l'exécution, il utilise cette valeur, il est donc indispensable de le définir.

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

Et vous avez terminé !!! Bonne codage :)

2

Le moyen le plus simple consiste à utiliser le code ci-dessous avant de définir votre pilote.

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

vous devez ajouter un argument vm lors de l'exécution du programme. Cela devrait être comme 

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

Dans IntelliJ IDE beaucoup plus simple, allez dans Exécution → Modifier les configurations ... Dans les options VM, ajoutez ce qui précède.

IntelliJ Run Configurations

Eclipse dispose également des options permettant de donner un argument à vm lors de l'exécution. De cette façon, j'utilise Firefox portable avec Selenium.

1
arulraj.net

Ce code a tout simplement fonctionné pour moi

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

J'ai eu ce problème en déplaçant mon projet d'un ordinateur à un autre ... La solution consistait à recharger Selenium Webdriver à partir de nuget.

0
user890332

J'ai reçu ce message d'erreur lors de l'exécution de tests dans Visual Studio: Firefox ne se charge tout simplement pas et j'ai reçu le message d'erreur OP.

J'ai ouvert manuellement Firefox et découvert qu'il devait se mettre à jour (avant le chargement). Une fois que j'ai terminé, j'ai relancé la suite de tests et Firefox s'est bien présenté, les tests ont été correctement exécutés. Si vous obtenez cette erreur tout d'un coup, essayez cette réponse avant de mettre à jour quoi que ce soit sur votre ordinateur.

0
Justa

J'avais aussi le même problème et j'ai passé plus d'une semaine à le réparer. Redémarrer ma machine semblait l’avoir corrigé, mais seulement temporairement. 

Il existait une solution pour augmenter le nombre maximal de ports éphémères en modifiant le fichier de registre. Cela semblait avoir résolu le problème, mais cela aussi, seulement temporairement.

Pendant un certain temps, je pensais toujours que si j'essayais d'accéder à un pilote qui n'est plus disponible, j'ai donc essayé d'appeler:

driver.quit()

Et puis recréez l'instance du navigateur, qui ne m'a donné que: SessionNotFoundException .

Je me suis maintenant rendu compte que j'avais utilisé BOTH System.setProperty ainsi que ffCapability.setCapability pour définir le chemin du fichier binaire.

J'ai alors essayé avec seulement System.setProperty => Pas de chance là-bas.

Seulement ffCapability.setCapability => Voila !!! Jusqu'à présent, cela a bien fonctionné. J'espère que cela fonctionnera très bien si j'essaye de relancer mes scripts demain et le lendemain et le lendemain ... :)

Bottomline: Utilisez seulement ceci

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

J'espère que ça aide!

0
user6376

Essaye ça:

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

Pour moi, il suffisait de changer la variable de chemin en: 'C:\Program Files\Mozilla Firefox' au lieu de 'C:\Program Files (x86)\Mozilla Firefox'

0
Eyal Sooliman