In Selenium Grid I am trying to execute a simple program and I'm getting Cannot find firefox binary in PATH
though I have added the binary path in my code.
My code and the error are given below. Kindly need help. Thanks in advance.
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 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
If you have installed Firefox at a custom location, uninstall existing firefox and install it at a default location. Your firefox should be under "Program Files (x86)" NOT "Program Files" or any other custom location.
Firefox would normally be installed in one of these locations: (64-bit Firefox) "C:\Program Files\Mozilla Firefox\" (32-bit Firefox) "C:\Program Files (x86)\Mozilla Firefox\"
To run the version installed with your package manager, you will need to execute the binary from a terminal. To do so in most distributions, open a terminal and type: /usr/bin/firefox .
setproperty(“webdriver. gecko. driver”,Path_of_Firefox_Driver”); method to set the path of the Firefox Driver(GeckoDriver). Then it has created an object of Firefox Driver to instantiate the Mozilla Firefox browser and execute the test cases.
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);
Another option is to configure the server rather than the test client.
Configure the slave node service so that it knows where the firefox is. Install location can change from node to node, or even need multiple services running on a node to support access to different versions of FF.
java -jar "selenium-server-standalone-2.2.0.jar" -Dwebdriver.firefox.bin="C:\FirefoxCollection\Mozilla Firefox 36.0\firefox.exe"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With