Selenium с использованием Java. Путь к исполняемому файлу драйвера должен быть задан с помощью свойства webdriver.gecko.driver

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

Исключение в streamе «main» java.lang.IllegalStateException: путь к исполняемому файлу драйвера должен быть задан с помощью свойства webdriver.gecko.driver; для получения дополнительной информации см. https://github.com/mozilla/geckodriver . Последняя версия может быть загружена с https://github.com/mozilla/geckodriver/releases

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

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

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

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

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

Чтобы использовать Marionette в своих тестах, вам нужно будет обновить нужные вам возможности для ее использования.

Java :

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

 //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 (Node.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 в Selenium Grid.

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

.СЕТЬ

 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.gecko.driver”, и это можно установить перед созданием объекта драйвера, как показано ниже

 System.setProperty("webdriver.gecko.driver", "./libs/geckodriver.exe"); WebDriver driver = new FirefoxDriver(); 
  • Исключение в streamе «main» java.lang.NoClassDefFoundError: org / openqa / selenium / WebDriver
  • Селен ждать, пока документ не будет готов
  • Возвращаемое значение в функции из блока обещаний
  • Исключение StaleElementReference в PageFactory
  • org.openqa.selenium.WebDriverException: неизвестная ошибка: файл DevToolsActivePort не существует при попытке запустить браузер Chrome
  • org.openqa.selenium.WebDriverException: неизвестная ошибка: результат функции вызова отсутствует «значение»
  • Как остановить Selenium от создания временных профилей Firefox с помощью Web Driver?
  • Обновление веб-страницы по WebDriver при ожидании определенного состояния
  • Веб-драйвер PhantomJS остается в памяти
  • Эквивалент waitForVisible / waitForElementPresent в тестах Selenium WebDriver с использованием Java?
  • Переключить вкладки с помощью Selenium WebDriver с Java
  • Interesting Posts

    Как написать DVD из загрузочного накопителя с ручкой

    AngularJS: ng-selected не отображает выбранное значение

    Есть ли недостатки в использовании UPX для сжатия исполняемого файла Windows?

    Почему Windows 7 Ultimate (64-разрядная) не содержит систему каталогов64, такую ​​как system32 в xp?

    Ввод HTML внутри Html.ActionLink (), плюс текст ссылки?

    Ошибка API-интерфейса Asp.Net: тип «ObjectContent`1» не смог сериализовать тело ответа для типа контента «application / xml»; кодировка = UTF-8′

    Поставщики местоположения Android – GPS или сетевой провайдер?

    Как обмениваться случайным состоянием nump родительского процесса с дочерними процессами?

    Регулярное выражение для слова «или» нескольких слов в grep

    Откройте книгу с помощью FileDialog и обработайте ее в Excel VBA

    Как вы используете gcc для генерации кода сборки в синтаксисе Intel?

    Как я могу запустить Windows 8 на рабочий стол по умолчанию?

    Поворот изображения с помощью AffineTransform

    Получить текущее имя представления в ASP.NET MVC?

    Как добавить функцию в jQuery?

    Давайте будем гением компьютера.