Запустите драйвер Firefox ThreadLocal в Selenium 3 - Java

Я только что обновился до Selenium 3.0.0-beta3 и пытаюсь выполнить тесты в Firefox 45.

Я загрузил geckodriver.exe v.10 и добавил его в свои переменные среды PATH. Я также устанавливаю системное свойство в коде для geckodriver, как я это делаю, когда использую драйвер Chrome, который отлично работает, однако я все равно получаю следующее сообщение TestNG:

org.openqa.selenium.WebDriverException: путь к исполняемому файлу драйвера должен быть задан системным свойством webdriver.gecko.driver; для получения дополнительной информации см. https://github.com/mozilla/geckodriver. Последнюю версию можно загрузить по адресу https://github.com/mozilla/geckodriver/releases. продолжительность или время ожидания: 411 миллисекунд Информация о сборке: версия: «2.52.0», редакция: «4c2593cfc3689a7fcd7be52549167e5ccc93ad28», время: «2016-02-11 11:22:43» Информация о системе: хост: «VMP-2316», ip: '10.80.50.100', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_92' Информация о драйвере: org.openqa.selenium.remote .RemoteWebDriver

Вот код, который я использую для установки драйвера:

// Set Driver
threadDriver = new ThreadLocal<RemoteWebDriver>();
DesiredCapabilities dc = new DesiredCapabilities();

System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");

dc.setBrowserName(DesiredCapabilities.firefox().getBrowserName());
dc.setCapability("marionette", true);

threadDriver.set(new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc));

person Dustin N.    schedule 19.09.2016    source источник


Ответы (2)


Другой способ — указать путь к драйверу в командной строке, запускающей сервер/узел:

java -Dwebdriver.gecko.driver=path/to/geckodriver.exe -jar selenium-server-standalone-3.0.0-beta3.jar
person Florent B.    schedule 19.09.2016

Я предполагаю, что вы проводите свои тесты против сетки. Когда тесты выполняются для Grid, задействованы три машины.

  1. Machine_A — здесь тестовые случаи будут выделены для выполнения.
  2. Machine_B — здесь будет работать Grid Hub.
  3. Machine_C — здесь будет работать узел Grid и машина, на которой будут открыты браузеры.

В вашем случае вам нужно убедиться, что Machine_C имеет либо

  1. Бинарный файл geckodriver доступен в переменной PATH (или)
  2. Бинарный путь geckodriver сообщается узлу селена через аргумент JVM -Dwebdriver.gecko.driver (как упоминал Флоран)

Оператор System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe"); повлияет на Machine_A, а не на Machine_C (где он действительно должен действовать).

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

person Krishnan Mahadevan    schedule 20.09.2016