2013-08-16 11 views
22

I node.js selenium web driver example versuche ...Fehler: Der Pfad zum Treiber ausführbar sind vom webdriver.chrome.driver Systemeigenschaft

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

... aber erhielt Fehler

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) 

eingestellt werden I guessed PATH-Variable zu setzen:

$ cat .bashrc 

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

Und Neustart Konsole, bekam aber den gleichen Fehler.

+0

Ich musste Firefox verwenden, um End-to-End-Tests zu erhalten, um unter Verwendung von Protractor auf Linux zu arbeiten. – Droogans

Antwort

42

Mit Selen-Server-Stand-Alone- * .jar aus here, können Sie webdriver.chrome.driver Eigenschaft übergeben, wenn es wie so starten:

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

Diese den Fehler beseitigt; Die Java-Befehlszeilenoption -Dproperty=value legt einen Systemeigenschaftswert wie erwartet fest.

+0

müssen Sie diesen Backslashes nicht entkommen? – kajacx

+1

@kajacx: ​​Die obige Syntax ist korrekt für eine "Vanille" Kommandozeile Start –

+0

Ich weiß, es ist ein alter Post, aber diese Lösung war nützlich für mich nach der Migration von Behat 2 zu Behat 3, die sich über Chromedriver beschweren. +1 – BentCoder

-2

können Sie den folgenden Code verwenden Pfad

im Code zu setzen
System.setProperty("webdriver.chrome.driver", "your_path"); 

Pfad in Anführungszeichen zu erwähnen.

+4

Kann nicht mit Nodejs arbeiten. – CodeGuru

2

Wenn Sie nicht über die Selen-Server verwenden möchten, aber nur direkt die chromedriver verwenden, wird in etwa so funktionieren:

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

Es ist nicht sehr gut dokumentiert, ich um die Quelle zu stecken hatte ein bisschen codieren.

+0

Wie würden Sie dies verwenden, während Sie immer noch 'chrome.Options()' verwenden könnten? –

0

Die einfachste Lösung, die ich gefunden habe, ist, die Chromedriver-Datei ausführbar zu machen.

Falsch:

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

Richtig:

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

Sobald chromedriver abgestimmt PhantomJS es zum Leben sprang

5

Nur falls jemand diesen Fehler:

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

diese thread helfen könnten:

Verwenden Parameter vor JAR-Datei

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

Also Ihr Befehl sollte:

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

Hoffe, dass es jemand in Zukunft hilft.

Verwandte Themen