Подтвердить что ты не робот

Невозможно найти двоичный файл firefox в PATH. Убедитесь, что firefox установлен

В Selenium Grid я пытаюсь выполнить простую программу, и я получаю Cannot find firefox binary in PATH, хотя я добавил двоичный путь в свой код.
Мой код и ошибка приведены ниже. Пожалуйста, помогите. Спасибо заранее.


Кодекса

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


Ошибка

[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 [email protected]: 27 ms
[TestNG] Time taken by org.testng.reporters.jq.Main[email protected]: 22 ms
[TestNG] Time taken by [email protected]: 6 ms
[TestNG] Time taken by [email protected]: 6 ms
[TestNG] Time taken by [email protected]: 6 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 4 ms
4b9b3361

Ответ 1

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

Ответ 2

Другой вариант - настроить сервер, а не тестовый клиент.

Настройте службу slave node, чтобы он знал, где находится firefox. Место установки может меняться от node до node или даже понадобиться несколько служб, работающих на node, для поддержки доступа к различным версиям FF.

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

Ответ 3

Убедитесь, что firefox должен установить на место по умолчанию, например → (c:/Program Files (x86)/mozilla firefox ИЛИ c:/Program Files/mozilla firefox, note: во время установки firefox не измените путь так, чтобы он устанавливал путь по умолчанию) Если firefox установлен в каком-либо другом месте, то селен показывает эту ошибку.

Если вы установили свой firefox в переменную окружения System (Windows), то либо удалите его, либо обновите с новым пути версии firefox.

Если вы хотите использовать Firefox в любом другом месте, используйте ниже код: -

Поскольку FirefoxProfile лишен, нам нужно использовать FirefoxOptions, как показано ниже:

Новый код:

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

Старый код, который будет работать для старых версий тюнеров селена

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

Ответ 4

У меня была такая же проблема на С# с использованием 64-битной Windows и 64-битного браузера Firefox, который, похоже, не работает на Selenium. Если вы используете 64-разрядный браузер, попробуйте 32-разрядный вариант.

Удивительно, что 32-разрядный браузер Firefox работает на 64-разрядной Windows просто отлично.

Отредактировано для уточнения цели моего сообщения.

Ответ 5

Вы добавили firefox к вашему пути после запуска сервера selenium? Если это так, селен по-прежнему будет использовать старый путь. Решение отключить и перезапустить selenium, чтобы оно использовало переменную среды обновленная Path.

Чтобы проверить, правильно ли добавлен firefox в ваш путь, вы можете просто запустить терминал командной строки "cmd" и ввести там "firefox" + ENTER. Если запускается firefox, все в порядке, и перезапуск сервера selenium должен устранить проблему.

Ответ 6

У меня была эта проблема без изменения PATH.

Мой компьютер - это Win7, 64-битная система, Если вы также используете 64-битную систему, вы можете попробовать:

  • удалите текущий Firefox.
  • установите новый Firefox в папку "C:\Program Files (x86)\Mozilla Firefox".

Он должен находиться под "Program Files (x86)" NOT "Program Files"

Надеюсь, это поможет.

Ответ 7

Проще всего сделать, чтобы узлы сетки регистрировали двоичный путь Firefox как часть конфигурации node. Он использует те же возможности, что и у клиента, но позволяет выбрать браузер по имени и позволить node найти его.

Также обратите внимание, что желаемая функция - "firefox_binary", а не "двоичная". Вы можете увидеть полный список возможностей Firefox на этой странице вики:

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

Ответ 8

Вам нужно добавить gecko driver, если вы используете firefox v50 и выше.

Используйте следующий пример кода:

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

Ответ 9

Я не рассматривал С# anwer на этот вопрос здесь. Хитрость заключается в том, чтобы установить свойство BrowserExecutableLocation в экземпляре FirefoxOptions и передать его в конструктор драйвера:

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

Ответ 10

Эта проблема может быть из-за несовместимости драйвера firefox и версии браузера Firefox. Загрузите последнюю версию драйвера firefox, совместимую с обновленной версией браузера Firefox.

Ответ 11

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

Поместите файл selenium jar на рабочий стол, перейдите в cmd и выполните приведенную выше команду.

Ответ 13

Это связано с использованием RemoteWebDriver, используемым в коде. Он пытается вызвать браузер Firefox в машине node. Если вы указали двоичное расположение firefox в переменной среды "PATH" машины node, она откроет браузер firefix при выполнении это от Хаба.

Ответ 14

Я также сталкиваюсь с той же проблемой в ОС Windows 10-64 бит.

Когда я устанавливаю firefox на моем ПК, его установленное местоположение "C:\Program Files\Mozilla Firefox\firefox.exe" вместо "C:\Program Files (x86)\Mozilla Firefox", потому что OS 64 бит,

Итак, я просто скопирую и вставляю папку "Mozilla Firefox" в папку "C:\Program Files (x86)" и выполняю сценарии селена, ее работа для меня.