node.js - chromedriver - selenium webdriver nodejs
Error: la ruta del ejecutable del controlador debe establecerse mediante la propiedad del sistema webdriver.chrome.driver (5)
Estoy probando el ejemplo del controlador web de selenio node.js ...
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();
... pero obtuve un error
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)
guessed que establecería la variable PATH:
$ cat .bashrc
export PATH=$PATH:/usr/local/git/bin/
export PATH=$PATH:~/bin
export PATH=$PATH:~/Dropbox/chromedriver
Y reinicie la consola, pero obtuvo el mismo error.
En caso de que alguien obtenga este error:
Excepción en el hilo "principal" com.beust.jcommander.ParameterException: Opción desconocida: -Dwebdrive
este thread podría ayudar:
Use los parámetros antes del archivo jar
java [-options] -jar jarfile [args...] (to execute a jar file)
Entonces tu comando debería ser:
java -jar -Dwebdriver.chrome.driver="D:/dev/chromedriver.exe" selenium-server-standalone-2.35.0.jar
Espero que ayude a alguien en el futuro.
La solución más simple que encontré es hacer ejecutable el archivo chromedriver.
Incorrecto:
**-rw-rw-r--** 1 user user 5560736 Jul 31 00:56 chromedriver
Correcto:
**-rwxrwxr-x** 1 user user 58204704 Aug 14 08:18 phantomjs
Una vez que el cromedriver coincidía con phantomjs, cobraba vida
Puede usar el siguiente código para establecer la ruta en su código
System.setProperty("webdriver.chrome.driver", "your_path");
Camino a ser mencionado entre comillas.
Si no quiere usar el servidor de selenio pero solo quiere usar el cromedriver directamente, algo como esto funcionará:
var chrome = require(''selenium-webdriver/chrome'');
var service = new chrome.ServiceBuilder(__dirname + ''/node_modules/.bin/chromedriver'').build();
var driver = new chrome.createDriver(capabilities, service);
No está muy bien documentado, tuve que hurgar un poco en el código fuente.
Usando selenium-server-standalone- * .jar desde here , puede pasar la propiedad webdriver.chrome.driver
al webdriver.chrome.driver
esta manera:
java -jar selenium-server-standalone-2.35.0.jar -Dwebdriver.chrome.driver="D:/dev/chromedriver.exe"
Esto elimina el error; La opción de línea de comando de Java -Dproperty=value
establece un valor de propiedad del sistema como se esperaba.