No se puede encontrar el binario de Firefox en PATH. Asegúrate de que Firefox esté instalado

En Selenium Grid estoy intentando ejecutar un progtwig simple y estoy obteniendo Cannot find firefox binary in PATH aunque he agregado la ruta binaria en mi código.
Mi código y el error se dan a continuación. Amablemente necesita ayuda. Gracias por adelantado.

Código

 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.(RemoteWebDriver.java:111) at org.openqa.selenium.remote.RemoteWebDriver.(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.(Executable.java:72) at org.openqa.selenium.firefox.FirefoxBinary.(FirefoxBinary.java:59) at org.openqa.selenium.firefox.FirefoxBinary.(FirefoxBinary.java:55) at org.openqa.selenium.firefox.FirefoxDriver.getBinary(FirefoxDriver.java:182) at org.openqa.selenium.firefox.FirefoxDriver.(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 org.testng.reporters.SuiteHTMLReporter@93b52b: 27 ms [TestNG] Time taken by org.testng.reporters.jq.Main@3ba002: 22 ms [TestNG] Time taken by org.testng.reporters.EmailableReporter2@fa930d: 6 ms [TestNG] Time taken by org.testng.reporters.JUnitReportReporter@1f9c5c8: 6 ms [TestNG] Time taken by org.testng.reporters.XMLReporter@197f158: 6 ms [TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 4 ms 

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

Otra opción es configurar el servidor en lugar del cliente de prueba.

Configure el servicio del nodo esclavo para que sepa dónde está Firefox. La ubicación de instalación puede cambiar de un nodo a otro, o incluso necesita varios servicios que se ejecutan en un nodo para admitir el acceso a diferentes versiones de FF.

 java -jar "selenium-server-standalone-2.2.0.jar" -Dwebdriver.firefox.bin="C:\FirefoxCollection\Mozilla Firefox 36.0\firefox.exe" 

Asegúrate de que Firefox debe instalarse en el lugar predeterminado como -> (c: / Archivos de progtwig (x86) / mozilla firefox O c: / Archivos de progtwig / mozilla firefox, nota: en el momento de la instalación de Firefox no cambies la ruta, así que déjalo instalando en la ruta predeterminada ) Si firefox está instalado en algún otro lugar, el selenium muestra esos errores.

Si ha configurado su Firefox en la variable de entorno de Sistemas (Windows), elimínelo o actualícelo con la nueva ruta de la versión de Firefox.

Si desea utilizar Firefox en cualquier otro lugar, utilice el siguiente código:

Como FirefoxProfile está privado, tenemos que usar FirefoxOptions de la siguiente manera:

Nuevo código:

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

El código de trabajo completo del código anterior es el siguiente:

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

Descarga geckodriver para Firefox desde la URL siguiente:

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

Código antiguo que funcionará para versiones antiguas de selenium jars

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

¿Agregaste Firefox a tu camino después de haber iniciado el servidor de selenium? Si ese es el caso, el selenium seguirá usando la ruta anterior. La solución es derribar y reiniciar el selenium para que use la variable de entorno de ruta actualizada .

Para comprobar si se agrega Firefox correctamente en su ruta, puede simplemente iniciar un terminal de línea de comando “cmd” y escribir “firefox” + ENTRAR allí. Si se inicia Firefox, todo está bien y reiniciar el servidor de selenium debería solucionar el problema.

Tuve el mismo problema en C # usando Windows de 64 bits y el navegador Firefox de 64 bits que no parece funcionar en Selenium. Si está utilizando el navegador de 64 bits, pruebe el de 32 bits.

Sorprendentemente, el navegador Firefox de 32 bits se ejecuta en Windows de 64 bits sin problemas.

Editado para aclarar el propósito de mi publicación.

Acabo de tener este problema sin cambiar PATH.

Mi PC es Win7, sistema de 64 bits. Si también está utilizando un sistema de 64 bits, puede intentar:

  1. desinstala tu Firefox actual.
  2. instala Firefox nuevo en la ruta “C: \ Archivos de progtwig (x86) \ Mozilla Firefox \”.

Debe estar bajo “Archivos de progtwig (x86)” NO “Archivos de progtwig”

Espero que pueda ayudar.

firefox v50 agregar el gecko driver si está utilizando firefox v50 y superior.

Use el siguiente código de muestra:

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

Lo más fácil es hacer que los nodos de la red registren la ruta binaria de Firefox como parte de la configuración del nodo. Utiliza las mismas capacidades que tiene el cliente, pero le permite elegir el navegador por nombre y dejar que el nodo lo encuentre.

Tenga en cuenta también que la capacidad que desea es “firefox_binary” y no “binaria”. Puede ver la lista completa de las capacidades de Firefox en esta página wiki:

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

No vi el C # anwer a esta pregunta aquí. El truco es establecer la propiedad BrowserExecutableLocation en una instancia de FirefoxOptions y pasarla al constructor del controlador:

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

Este problema puede deberse a la incompatibilidad entre el controlador de Firefox y la versión de su navegador Firefox. Descargue la última versión del controlador de Firefox que es compatible con la versión actualizada del navegador Firefox.

 java -jar selenium-server-standalone-2.53.1.jar -Dwebdriver.firefox.bin="C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 

Coloque el archivo jar de selenium en el escritorio, vaya a cmd y ejecute el comando anterior.

Debería cambiar la variable de entorno y agregar allí la ruta a firefox.exe. Lo mismo podría hacerse programáticamente. ¿Cómo puedo configurar / actualizar la variable PATH desde dentro de la aplicación Java en Windows? . Tuve el mismo problema en Win8.

Esto se debe a que RemoteWebDriver se usa en el código. Intenta invocar el navegador firefox en la máquina nodo. Si ha especificado la ubicación binaria de Firefox en la variable de entorno “PATH” de la máquina nodo, abrirá el navegador Firefix al ejecutarlo desde Hub.

También me he enfrentado al mismo problema en Windows 10-64 bit OS.

Cuando instalo Firefox en mi PC, su ubicación instalada es “C: \ Archivos de progtwig \ Mozilla Firefox \ firefox.exe” en lugar de “C: \ Archivos de progtwig (x86) \ Mozilla Firefox”, porque el sistema operativo es de 64 bits,

Así que simplemente copio y pego la carpeta “Mozilla Firefox” en la carpeta “C: \ Archivos de progtwig (x86)” y ejecuto scripts de selenium, su trabajo para mí.