【问题标题】:Error: The path to the driver executable must be set by the webdriver.chrome.driver system property错误:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置
【发布时间】:2013-08-18 19:26:35
【问题描述】:

我正在尝试node.js selenium web driver example...

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)

guessed设置PATH变量:

$ cat .bashrc

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

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

【问题讨论】:

  • 我必须使用 Firefox 进行端到端测试,才能使用 Protractor 在 Linux 上工作。

标签: node.js selenium-webdriver selenium-chromedriver


【解决方案1】:

使用 here 中的 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 按预期设置系统属性值。

【讨论】:

  • 你不需要转义那些反斜杠吗?
  • @kajacx:上述语法对于“vanilla”命令行启动是正确的
  • 我知道这是旧帖子,但在从 Behat 2 迁移到抱怨 chromedriver 的 Behat 3 后,此解决方案对我很有用。 +1
【解决方案2】:

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

线程“主”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 服务器而只想直接使用 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);
    

    没有很好的文档记录,我不得不在源代码周围戳了一下。

    【讨论】:

    • 您将如何使用它同时还能使用chrome.Options()
    【解决方案4】:

    我找到的最简单的解决方案是使 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 匹配,它就会活跃起来

    【讨论】:

      【解决方案5】:

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

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

      引号内要提及的路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-17
        • 2016-11-04
        • 2020-11-27
        • 2020-08-29
        • 2017-04-26
        • 2017-03-16
        • 2017-11-12
        相关资源
        最近更新 更多