web-dev-qa-db-ja.com

chromedriverがパス上にあるにもかかわらず、「現在のパス上にChromeDriverが見つかりませんでした」というnode.jsの不満

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/ 、そしてあなたが見ることができるように、それは私のPATH上にあります

[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

そのため、このエラーが発生する理由について混乱しています。どんな助けでもありがたいです-デイブ

11
Dave

ニールズの答えに追加するには、バベルを使用していない人のために

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

同じ問題がありました。 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 to direct to Selenium-webdriver

少し遅れるかもしれませんが、誰かがこの問題に遭遇した場合、私は次のことを行いました:

最初の_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

2
erald95

私の小さなSelenium-webdriverテストでは、オンラインとここで調べた後、次の手順を実行しました。

  1. npm install Selenium-webdriver
  2. npm install chromedriver
  3. npm install geckodriverと開いたファイルlibrary.jsとnpm initnode library.jsを実行しました(以下のソースコード)
  4. Error:(node:14212) UnhandledPromiseRejectionWarning: NoSuchSessionError: invalid session id同じではないchromedriverバージョンに関連するいくつかの長いエラー。 chromeブラウザのバージョンをブラウザで手動で確認しました。それはversion 73でしたが、私の間違いはchromedriver version 74.0をダウンロードしたものです。
  5. oSに応じてhttps://chromedriver.storage.googleapis.com/index.html?path=73.0.3683.68/ダウンロードに移動し、~/Downloadsからダウンロードしてください。
  6. 次に、~/Downloadsフォルダーのterminalを開きます。
  7. 次にUSER@DESKTOP:~/Downloads$ unzip ~/Downloads/chromedriver_linux64.Zip -d ~/Downloads~/Downloadsフォルダーにchromedriverの生ファイルを取得します。
  8. ここで、ChromeDriver 73.0.3683.68ファイルを2つの場所に移動しました-システム内のusr/local/binusr/bin
  9. usr/local/binにはすでにchromedriverファイルがありました。
  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');
2
suryavansh