Ошибка: путь к исполняемому файлу драйвера должен быть задан с помощью свойства webdriver.chrome.driver
Я пытаюсь node.js пример веб-драйвера selenium...
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
usingServer('http://localhost:4444/wd/hub').
withCapabilities(webdriver.Capabilities.chrome()).
build();
driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(function() {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
});
}, 1000);
driver.quit();
... но получил ошибку
promise.js:1542
throw error;
^
UnknownError: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list
at new bot.Error (/Users/maks/Dropbox/nodeApps/orgi/node_modules/selenium-webdriver/lib/atoms/error.js:109:18)
I угадал, чтобы установить переменную PATH:
$ cat .bashrc
export PATH=$PATH:/usr/local/git/bin/
export PATH=$PATH:~/bin
export PATH=$PATH:~/Dropbox/chromedriver
И перезагрузите консоль, но получив ту же ошибку.
Ответы
Ответ 1
Используя selenium-server-standalone - *. jar из здесь, вы можете передать свойство webdriver.chrome.driver
при его запуске следующим образом:
java -jar selenium-server-standalone-2.35.0.jar -Dwebdriver.chrome.driver="D:\dev\chromedriver.exe"
Это устраняет ошибку; Параметр командной строки Java -Dproperty=value
устанавливает значение системного свойства, как ожидалось.
Ответ 2
На всякий случай кто-то получит эту ошибку:
Исключение в потоке "main" com.beust.jcommander.ParameterException: Неизвестный параметр: -Dwebdrive
этот thread может помочь:
Использовать параметры перед файлом jar
java [-options] -jar jarfile [args...] (to execute a jar file)
Итак, ваша команда должна быть:
java -jar -Dwebdriver.chrome.driver="D:\dev\chromedriver.exe" selenium-server-standalone-2.35.0.jar
Надеюсь, что это поможет кому-то в будущем.
Ответ 3
Если вы не хотите использовать сервер selenium, но хотите напрямую использовать хромированный рекордер, что-то вроде этого будет работать:
var chrome = require('selenium-webdriver/chrome');
var service = new chrome.ServiceBuilder(__dirname + '/node_modules/.bin/chromedriver').build();
var driver = new chrome.createDriver(capabilities, service);
Это не очень хорошо задокументировано, мне пришлось немного сокрушить исходный код.
Ответ 4
Самое простое решение, которое я нашел, - сделать исполняемый файл хромированного файла.
Неправильно:
**-rw-rw-r--** 1 user user 5560736 Jul 31 00:56 chromedriver
Правильно:
**-rwxrwxr-x** 1 user user 58204704 Aug 14 08:18 phantomjs
После того, как хронографы совпали с фантомами, они ожили
Ответ 5
Вы можете использовать следующий код для установки пути в своем коде
System.setProperty("webdriver.chrome.driver", "your_path");
Путь, который будет указан в кавычках.