plugin - java esr
No se puede encontrar el binario de Firefox en PATH. Asegúrate de que Firefox esté instalado (14)
En Selenium Grid estoy intentando ejecutar un programa 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.<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 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
¿Agregaste Firefox a tu camino después de haber iniciado el servidor de selenio? Si ese es el caso, el selenio seguirá usando la ruta anterior. La solución es derribar y reiniciar el selenio 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 selenio debería solucionar el problema.
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:
- desinstala tu Firefox actual.
- instala Firefox nuevo en la ruta "C: / Archivos de programa (x86) / Mozilla Firefox /".
Debe estar bajo "Archivos de programa (x86)" NO "Archivos de programa"
Espero que pueda ayudar.
Asegúrate de que Firefox debe instalarse en el lugar predeterminado como -> (c: / Archivos de programa (x86) / mozilla firefox O c: / Archivos de programa / 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 selenio 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);
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.
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.
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.
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:
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);
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"
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 programa / Mozilla Firefox / firefox.exe" en lugar de "C: / Archivos de programa (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 programa (x86)" y ejecuto scripts de selenio, su trabajo para mí.
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.
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);
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);
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 selenio en el escritorio, vaya a cmd y ejecute el comando anterior.