it-swarm.com.ru

Не удается найти бинарный файл firefox в PATH. Убедитесь, что Firefox установлен. ОС выглядит так: VISTA

Я не могу запустить свой скрипт в любом из браузеров. Ниже приведена ошибка, которую я получаю для Firefox. Место, где установлен Firefox, является правильным. Не знаю, что не так.

Я использую Firefox 15. Selenium Java 2.2.0 и Eclipse Juno

Мой тестовый пример приведен ниже:

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

Ниже приведена ошибка, которую я получаю:

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. Откройте Командную строку (Пуск -> Выполнить -> введите "cmd")
  2. тип PATH 
  3. Убедитесь, что вы можете увидеть здесь написано C:\Program Files\Mozilla Firefox15\Firefox.exe

Вероятно, это будет не здесь - потому что это то, что говорит ошибка. Как это исправить?

  1. Нажмите Пуск
  2. Щелкните правой кнопкой мыши на «Компьютер» и выберите «Свойства»
  3. В левом меню выберите «Расширенные настройки системы».
  4. Перейдите на вкладку «Дополнительно» и нажмите «Переменные среды ...»
  5. В окне ниже выберите «Путь» и нажмите «Редактировать ...» (необходимы права администратора)
  6. Добавьте в конце нужный путь, разделив точку с запятой
  7. Возможна перезагрузка компьютера

Если это не поможет, тогда измените конструктор так:

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

обратите внимание, если в пути к браузеру есть пробел (например, "...\Program Files (x86) ..."), вам нужно добавить двойные кавычки к значению параметра.

Пример:

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

Все было успешно выполнено при добавлении двойных кавычек.

3
Kosmos

По какой-то причине добавление переменной окружения мне не помогло.

Мне удалось указать путь к Firefox в конфигурации узла командной строки, как описано на этой странице page (grid2).

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

Я тоже страдал от той же проблемы. Наконец, я решил это, установив двоичное значение в capabilites, как показано ниже. Во время выполнения он использует это значение, поэтому его необходимо установить.

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

И все готово !!! Удачного кодирования :)

2
Santosh Ganacharya

Самый простой способ - использовать приведенный ниже код перед тем, как определить свой драйвер.

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

вы должны добавить аргумент VM при запуске программы. Это должно быть как 

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

В IntelliJ IDE намного проще Перейти к Выполнить → Редактировать конфигурации ... В опциях VM добавьте вышеперечисленное.

IntelliJ Run Configurations

В Eclipse также есть опции для указания аргумента vm во время работы. Таким образом, я использую портативный Firefox с Selenium.

1
arulraj.net

Этот код просто работал для меня

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

У меня была эта проблема при переносе моего проекта с одного компьютера на другой .... Решением было перезагрузить веб-драйвер Selenium из nuget.

0
user890332

Я получил это сообщение об ошибке при запуске тестов в Visual Studio: Firefox просто не загружался, и я получил сообщение об ошибке OP.

Я вручную открыл Firefox и обнаружил, что ему нужно обновить себя (он сделал это перед загрузкой). Когда я закончил, я перезапустил набор тестов, и Firefox хорошо показал себя, тесты были выполнены правильно. Если вы получили эту ошибку внезапно, пожалуйста, попробуйте этот ответ, прежде чем обновлять что-либо на вашем компьютере.

0
Justa

Я также столкнулся с той же проблемой и потратил больше недели, чтобы ее исправить. Перезапуск моей машины, казалось, исправил это, но только временно. 

Было решение увеличить максимальное количество эфемерных портов путем редактирования файла реестра. Это, казалось, решило проблему, но это также, только временно.

Некоторое время я продолжал думать, пытался ли я получить доступ к драйверу, который больше не доступен, поэтому я попытался вызвать:

driver.quit()

А затем воссоздайте экземпляр браузера, который только дал мне: SessionNotFoundException .

Теперь я понял, что использовал ОБА System.setProperty, а также ffCapability.setCapability, чтобы установить путь двоичного файла.

Затем я попытался только с System.setProperty => Не повезло там.

Только ffCapability.setCapability => Вуаля !!! Пока все работает нормально. Надеюсь, это будет прекрасно работать, когда я попытаюсь перезапустить свои сценарии завтра и послезавтра и послезавтра ... :)

Итог: Используйте только это

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

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

0
user6376

Попробуй это:

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

Для меня это был просто вопрос изменения переменной пути на «C:\Program Files\Mozilla Firefox» вместо «C:\Program Files (x86)\Mozilla Firefox»

0
Eyal Sooliman