node.js抱怨说“当前路径上找不到ChromeDriver”,即使chromedriver在路径上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js抱怨说“当前路径上找不到ChromeDriver”,即使chromedriver在路径上相关的知识,希望对你有一定的参考价值。

我在Linux上使用节点5.10.0。运行我的脚本时出现一些问题,如下所示

[davea@mydevbox mydir]$ node SkyNet.js 
Validation Complete
/home/davea/node_modules/selenium-webdriver/chrome.js:185
      throw Error(
      ^

Error: The ChromeDriver could not be found on the current PATH. Please download the latest version of the ChromeDriver from http://chromedriver.storage.googleapis.com/index.html and   ensure it can be found on your PATH.
    at Error (native)
    at new ServiceBuilder (/home/davea/node_modules/selenium-webdriver/chrome.js:185:13)
    at getDefaultService (/home/davea/node_modules/selenium-webdriver/chrome.js:362:22)
    at Driver (/home/davea/node_modules/selenium-webdriver/chrome.js:771:34)
    at Builder.build (/home/davea/node_modules/selenium-webdriver/builder.js:464:16)
    at Object.<anonymous> (/home/davea/mydir/js/Optimus.js:14:4)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)

这是说chromedriver不在我的路上,但我刚从这里下载了相应的版本 - http://chromedriver.storage.googleapis.com/index.html?path=2.9/,正如你所看到的,它在我的路径上

[davea@mydevbox mydir]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/davea/bin:/home/davea/bin:/usr/lib/chromedriver

具有以下权限...

[davea@mydevbox mydir]$ ls -al /usr/lib/chromedriver
-rwxr-xr-x 1 davea evotext 5503600 Feb  3  2014 /usr/lib/chromedriver

所以我很困惑为什么我收到这个错误。任何帮助表示赞赏, - 戴夫

答案

我遇到过同样的问题。我已经通过chromedriver包的路径解决了这个问题。

这是我的代码:

import webdriver from 'selenium-webdriver';
import chrome from 'selenium-webdriver/chrome';
import chromedriver from 'chromedriver';

chrome.setDefaultService(new chrome.ServiceBuilder(chromedriver.path).build());

var driver = new webdriver.Builder()
                 .withCapabilities(webdriver.Capabilities.chrome())
                 .build();

这是基于这个答案的代码:Passing require('chromedriver).path directly to selenium-webdriver

另一答案

对于那些不使用Babel的人来说,加上Niels的回答

  1. 首先使用npm安装chromedrive软件包。如果全局安装,请确保在路径中包含节点包
npm install -g chromedriver

如果PATH错误仍然存​​在,只需将其保存到本地项目的依赖项中

npm install --save chromedriver
  1. 对于那些不使用巴别塔的人
let webdriver = require('selenium-webdriver');
let chrome = require('selenium-webdriver/chrome');
let chromedriver = require('chromedriver');

chrome.setDefaultService(new chrome.ServiceBuilder(chromedriver.path).build());
另一答案

对于我的小selenium-webdriver测试我在网上和这里研究后做了这些步骤:

  1. npm install selenium-webdriver
  2. npm install chromedriver
  3. npm install geckodriver并打开文件library.js和npm init并运行node library.js(源代码如下)
  4. Error: (node:14212) UnhandledPromiseRejectionWarning: NoSuchSessionError: invalid session id与不同的chromedriver版本相关的一些长错误。所以我在浏览器中手动检查了Chrome浏览器版本。这是version 73和我的错误,我已下载chromedriver version 74.0
  5. 所以,请根据您的操作系统下载https://chromedriver.storage.googleapis.com/index.html?path=73.0.3683.68/,并在~/Downloads下载。
  6. 然后在terminal文件夹中打开~/Downloads
  7. 然后USER@DESKTOP:~/Downloads$ unzip ~/Downloads/chromedriver_linux64.zip -d ~/Downloads您将获得chromedriver文件夹中的原始~/Downloads文件。
  8. 现在我将ChromeDriver 73.0.3683.68文件移动到我的系统中的两个地方 - usr/local/binusr/bin
  9. chromedriver已经有一个usr/local/bin文件。
  10. 移动文件 - USER@DESKTOP:~/Downloads$ sudo mv -f ~/Downloads/chromedriver /usr/local/bin/chromedriverUSER@DESKTOP:~/Downloads$ sudo mv -f ~/Downloads/chromedriver /usr/bin/chromedriver你说要将文件chromedriver从第一个位置移动到其他位置意味着用相同的名称替换那些位置中已有的文件。
  11. 最后我做的就是。关闭vscode并重新启动它。并运行我的代码node library.js。它为我的Chrome浏览器工作。

消息代码:LIBRARY.JS

var webdriver = require('selenium-webdriver');

var By = webdriver.By;

var until = webdriver.until;

var driver = new webdriver.Builder().forBrowser('chrome').build();

driver.get('https://www.google.com');
另一答案

可能有点晚了但是如果有人遇到这个问题,我可以做以下工作:

第一个npm install -g chromedriver --save

然后在代码require('chromedriver');上添加此行

这是一个演示

require('chromedriver');
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder()
  .forBrowser('chrome')
  .build();
driver.get('https://google.com');

有关详细信息,请访问:https://www.npmjs.com/package/chromedriver

以上是关于node.js抱怨说“当前路径上找不到ChromeDriver”,即使chromedriver在路径上的主要内容,如果未能解决你的问题,请参考以下文章

node.js 经验总结

使用 node.js 在 Windows 上抓取网站

使用 Node NOT io.js 在 Mocha 测试中使用 jQuery

说Node.js做后端开发,stream有必要了解下

谷歌不喜欢 Node.js ? 听听开发团队怎么说

无论证书有效性如何,我的 node.js https 客户端始终有效