Selenium using Java-путь к исполняемому файлу драйвера должен быть установлен webdriver.геккон.свойство системы драйвера

Я пытаюсь запустить Mozilla, но все равно я получаю эту ошибку:

исключение в потоке" main " java.ленг.IllegalStateException: путь к исполняемому файлу драйвера должен быть установлен webdriver.геккон.системное свойство драйвера; дополнительные сведения см. В разделеhttps://github.com/mozilla/geckodriver. Последнюю версию можно скачать сhttps://github.com/mozilla/geckodriver/releases

Я использую Selenium 3.0.01 бета версия и Mozilla 45. Я пробовал с Mozilla 47 тоже. но все то же самое.

4 ответов


на Selenium привязки клиента будут пытаться найти geckodriver исполняемый файл из системы PATH. Вам нужно добавить в каталог, содержащий исполняемый файл в системный путь.

  • On в Unix системы вы можете сделать следующее, Чтобы добавить его к пути поиска вашей системы, если вы используете оболочку, совместимую с bash:

    export PATH=$PATH:/path/to/geckodriver
    
  • On Windows вам нужно обновить путь системная переменная для добавления полного пути к исполняемому файлу. Принцип тот же, что и в Unix.

все ниже конфигурации для запуска последней firefox с использованием любого языка программирования привязки применимо для Selenium2 чтобы включить марионетку явно. С Selenium 3.0 и более поздними версиями вам не нужно ничего делать, чтобы использовать марионетку, так как она включена по умолчанию.

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

Java :

как исключение явно говорит, что вам нужно скачать последнюю версию geckodriver.exe С здесь и установить скачанный geckodriver.exe путь, где он существует на вашем компьютере как системное свойство с переменной webdriver.gecko.driver перед запуском драйвера марионетки и запуском firefox, как показано ниже : -

//if you didn't update the Path system variable to add the full directory path to the executable as above mentioned then doing this directly through code
System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");

//Now you can Initialize marionette driver to launch firefox
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
WebDriver driver = new MarionetteDriver(capabilities); 

и Selenium3 использовать в качестве :-

WebDriver driver = new FirefoxDriver();

если вы все еще в беде следуйте по этой ссылке, а также, что поможет вам решить вашу проблему

.NET:

var driver = new FirefoxDriver(new FirefoxOptions());

Python :

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.FIREFOX

# Tell the Python bindings to use Marionette.
# This will not be necessary in the future,
# when Selenium will auto-detect what remote end
# it is talking to.
caps["marionette"] = True

# Path to Firefox DevEdition or Nightly.
# Firefox 47 (stable) is currently not supported,
# and may give you a suboptimal experience.
#
# On Mac OS you must point to the binary executable
# inside the application package, such as
# /Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin
caps["binary"] = "/usr/bin/firefox"

driver = webdriver.Firefox(capabilities=caps)

Рубин :

# Selenium 3 uses Marionette by default when firefox is specified
# Set Marionette in Selenium 2 by directly passing marionette: true
# You might need to specify an alternate path for the desired version of Firefox

Selenium::WebDriver::Firefox::Binary.path = "/path/to/firefox"
driver = Selenium::WebDriver.for :firefox, marionette: true

JavaScript (Узел.в JS) :

const webdriver = require('selenium-webdriver');
const Capabilities = require('selenium-webdriver/lib/capabilities').Capabilities;

var capabilities = Capabilities.firefox();

// Tell the Node.js bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.set('marionette', true);

var driver = new webdriver.Builder().withCapabilities(capabilities).build();

используя RemoteWebDriver

если вы хотите использовать RemoteWebDriver в любом языке, это позволит вам использовать Marionette in Selenium решетки.

Python:

caps = DesiredCapabilities.FIREFOX

# Tell the Python bindings to use Marionette.
# This will not be necessary in the future,
# when Selenium will auto-detect what remote end
# it is talking to.
caps["marionette"] = True

driver = webdriver.Firefox(capabilities=caps)

Рубин :

# Selenium 3 uses Marionette by default when firefox is specified
# Set Marionette in Selenium 2 by using the Capabilities class
# You might need to specify an alternate path for the desired version of Firefox

caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true, firefox_binary: "/path/to/firefox"
driver = Selenium::WebDriver.for :remote, desired_capabilities: caps

Java :

DesiredCapabilities capabilities = DesiredCapabilities.firefox();

// Tell the Java bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.setCapability("marionette", true);

WebDriver driver = new RemoteWebDriver(capabilities); 

.NET

DesiredCapabilities capabilities = DesiredCapabilities.Firefox();

// Tell the .NET bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.SetCapability("marionette", true);

var driver = new RemoteWebDriver(capabilities); 

Примечание: как и другие драйверы, доступные для Selenium от других поставщиков браузеров, Mozilla выпустила исполняемый файл, который будет работать вместе с браузером. Следуйте за этой для получения более подробной информации.

вы можете загрузите последний исполняемый файл geckodriver для поддержки последнего firefox отсюда


  1. загрузите драйвер gecko с веб-сайта seleniumhq (теперь он находится на GitHub, и вы можете скачать его с здесь) .
    1. у вас будет zip (или tar.gz) так извлеките его.
    2. после извлечения у вас будет geckodriver.exe-файл (соответствующий исполняемый файл в linux).
    3. создать папку в C: с именем SeleniumGecko (или соответствующим)
    4. скопируйте и вставьте geckodriver.exe в SeleniumGecko
    5. задайте путь для драйвера gecko как ниже

.

System.setProperty("webdriver.gecko.driver","C:\geckodriver-v0.10.0-win64\geckodriver.exe");
WebDriver driver = new FirefoxDriver();

Selenium WebDriver Java код:

скачать драйвер Gecko из https://github.com/mozilla/geckodriver/releases на основе вашей платформы. Извлеките его в месте по вашему выбору. Напишите следующий код:

System.setProperty("webdriver.gecko.driver", "D:/geckodriver-v0.16.1-win64/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.lynda.com/Selenium-tutorials/Mastering-Selenium-Testing-Tools/521207-2.html");

каждая служба драйверов в selenium вызывает аналогичный код (ниже приведен конкретный код firefox) при создании объекта драйвера

 @Override
 protected File findDefaultExecutable() {
      return findExecutable(
        "geckodriver", GECKO_DRIVER_EXE_PROPERTY,
        "https://github.com/mozilla/geckodriver",
        "https://github.com/mozilla/geckodriver/releases");
    }

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

для firefox GECKO_DRIVER_EXE_PROPERTY = " webdriver.геккон.драйвер", и это можно установить перед созданием объекта драйвера, как показано ниже

System.setProperty("webdriver.gecko.driver", "./libs/geckodriver.exe");
WebDriver driver = new FirefoxDriver();