2013-08-16 11 views
22

sto cercando node.js selenium web driver example ...Errore: Il percorso del file eseguibile conducente deve essere impostato dal sistema webdriver.chrome.driver proprietà

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

... ma ha ricevuto l'errore

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 guessed per impostare la variabile PATH:

$ cat .bashrc 

export PATH=$PATH:/usr/local/git/bin/ 
export PATH=$PATH:~/bin 
export PATH=$PATH:~/Dropbox/chromedriver 

e riavviare console, ma ho ottenuto lo stesso errore.

+0

Ho dovuto usare Firefox per ottenere test end-to-end per lavorare su Linux usando Protractor. – Droogans

risposta

42

Utilizzando il selenio-server-standalone- * .jar da here, è possibile passare webdriver.chrome.driver proprietà quando si lancia in questo modo:

java -jar selenium-server-standalone-2.35.0.jar -Dwebdriver.chrome.driver="D:\dev\chromedriver.exe" 

Questo elimina l'errore; L'opzione della riga di comando Java -Dproperty=value imposta un valore di proprietà di sistema come previsto.

+0

non hai bisogno di sfuggire a quelle barre posteriori? – kajacx

+1

@kajacx: ​​la sintassi sopra riportata è corretta per un lancio di riga di comando "vanilla" –

+0

So che è vecchio post ma questa soluzione è stata utile per me dopo la migrazione da Behat 2 a Behat 3 che si lamentava di chromedriver. +1 – BentCoder

-2

È possibile utilizzare il seguente codice per impostare il percorso nel codice

System.setProperty("webdriver.chrome.driver", "your_path"); 

Percorso di essere menzionato tra virgolette.

+4

Non funziona con nodejs. – CodeGuru

2

Se non si desidera utilizzare il server di selenio, ma vuole solo utilizzare direttamente il chromedriver, qualcosa di simile a questo lavoro:

var chrome = require('selenium-webdriver/chrome'); 
var service = new chrome.ServiceBuilder(__dirname + '/node_modules/.bin/chromedriver').build(); 
var driver = new chrome.createDriver(capabilities, service); 

Non è molto ben documentato, ho dovuto colpire intorno alla sorgente codice un po '.

+0

Come utilizzeresti questo mentre hai ancora la possibilità di usare 'chrome.Options()'? –

0

La soluzione più semplice che ho trovato è quella di rendere eseguibile il file chromedriver.

errato:

**-rw-rw-r--** 1 user user 5560736 Jul 31 00:56 chromedriver 

corretta:

**-rwxrwxr-x** 1 user user 58204704 Aug 14 08:18 phantomjs 

phantomjs volta chromedriver abbinati che prese vita

5

Solo nel caso qualcuno questo errore:

Exception in thread "main" com.beust.jcommander.ParameterException: Unknown option: -Dwebdrive

questo thread potrebbe aiutare:

Utilizzare i parametri prima di file jar

java [-options] -jar jarfile [args...] (to execute a jar file) 

Così il vostro comando dovrebbe essere:

java -jar -Dwebdriver.chrome.driver="D:\dev\chromedriver.exe" selenium-server-standalone-2.35.0.jar 

Speranza che aiuta qualcuno in futuro.

Problemi correlati