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

Невозможно найти двоичный файл firefox в PATH. Убедитесь, что установлен Firefox. OS выглядит следующим образом: VISTA

Я не могу запустить мой script в любом из браузеров. Ниже приведена ошибка, которую я получаю для 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)
4b9b3361

Ответ 1

  • Откройте командную строку (Пуск → Выполнить → введите "cmd" )
  • type PATH
  • Убедитесь, что здесь вы можете увидеть C:\Program Files\Mozilla Firefox15\Firefox.exe

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

  • Нажмите "Пуск"
  • Щелкните правой кнопкой мыши "Компьютер" и выберите "Свойства"
  • В левом меню Выберите "Дополнительные настройки системы"
  • Перейдите на вкладку "Дополнительно" и нажмите "Переменные среды..."
  • В окне ниже выберите "Путь" и нажмите "Изменить..." (необходимы права администратора)
  • Добавьте в конце желаемый путь, разделенный точкой с запятой
  • Возможная перезагрузка компьютера.

Это не поможет затем изменить конструктор следующим образом:

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

Ответ 2

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

Пример:

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

Я тоже страдала от той же проблемы. Наконец, я решил это, установив двоичное значение в 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);

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

Ответ 6

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

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

В IntelliJ IDE гораздо проще Goto Run → Edit Configurations... В параметрах VM добавьте выше.

IntelliJ Run Configurations

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

Ответ 7

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

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

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

driver.quit()

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

Теперь я понял, что использовал BOTH System.setProperty, а также ffCapability.setCapability, чтобы установить путь к двоичному.

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

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

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

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

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

Ответ 11

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

Ответ 12

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

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

Ответ 13

File pathBinary = new File("Firefox.exe location");
FirefoxBinary ffBinary = new FirefoxBinary(pathBinary);
FirefoxProfile firefoxProfile = new FirefoxProfile();
FirefoxDriver driver = new FirefoxDriver(ffBinary,firefoxProfile);

Вам нужно добавить бинарный файл браузера

или

Лучшее и вечное решение: Просто добавьте местоположение Firefox.exe в переменные среды