23

我正在尝试node.js selenium web 驱动程序示例...

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)

猜想设置 PATH 变量:

$ cat .bashrc

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

并重新启动控制台,但得到了同样的错误。

4

5 回答 5

44

使用 selenium-server-standalone- * .jar from herewebdriver.chrome.driver ,您可以在启动时传递属性,如下所示:

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

这消除了错误;Java 命令行选项-Dproperty=value按预期设置系统属性值。

于 2013-08-19T02:13:04.380 回答
6

以防万一有人收到此错误:

线程“主”com.beust.jcommander.ParameterException 中的异常:未知选项:-Dwebdrive

这个线程可能会有所帮助:

在 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 

希望它对将来的人有所帮助。

于 2016-08-31T15:44:31.250 回答
2

如果您不想使用 selenium 服务器而只想直接使用 chromedriver,则可以使用以下方法:

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

它没有很好的文档记录,我不得不稍微浏览一下源代码。

于 2014-12-15T04:35:13.167 回答
0

我找到的最简单的解决方案是使 chromedriver 文件可执行。

不正确:

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

正确的:

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

一旦 chromedriver 与 phantomjs 匹配,它就会变得栩栩如生

于 2015-08-16T23:59:26.557 回答
-3

您可以使用以下代码在代码中设置路径

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

引号内要提及的路径。

于 2013-08-19T11:03:45.420 回答