web-dev-qa-db-ja.com

PyDev内でvirtualenvを使用してSelenium Chromeを実行しているときに「chromedriver実行可能ファイルがPATHにある必要があります」エラーを解決するにはどうすればよいですか?

ショート:

https://automatetheboringstuff.com/chapter11Selenium Moduleを使用してブラウザを制御するを読んだ後、実行しようとしていますPyDevの仮想環境のセレンChromeドライバー。私はPyDevの外部からなんとかできましたが、内部から得ました:

Selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

長いです:

Linux Debian 3.10.11-1を使用しています。

https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/ の前に、PyDevで始める前に、 。 。

  1. Virtualenvを使用して仮想環境をセットアップする

    1. インストールされたvirtualenv

      pip install virtualenv
    2. プロジェクトのディレクトリを作成しました

      cd〜/ temp /
      mkdir my_project
      cd my_mproject
    3. envという仮想環境を作成しました

      virtualenv env
    4. それをアクティブにしました。

      ソースenv/bin/activate
    5. Pythonのインタラクティブモードに入って、Pythonのどのバージョンを使用していたかを自分に教えました

      python
      Python 2.7.12rc1(デフォルト、2016年6月13日、09:20:59)
       [GCC 5.4.0 20160609] on linux2
  2. 対話モードを終了し、Seleniumのものをインストールした

    1. まずモジュール

      peleインストールSelenium
    2. https://groups.google.com/forum/#!topic/obey-the-testing-goat-book/Ty4FQoV3S0Q の提案に従って、インストールされたchromedriver

      1. cd env/bin /
      2. wget http://chromedriver.storage.googleapis.com/2.22/chromedriver_linux64.Zip
      3. chromedriver_linux64.Zipを解凍します
  3. それが機能するかどうかを確認するために小さなスクリプトを書きました

    seleniumからインポートwebdriver 
     driver = webdriver.Chrome()

    それを実行しました。 A Chrome web-browser window open。Great。

PyDevで試してみましょう:

おおまかに https://www.caktusgroup.com/blog/2011/08/31/getting-started-using-python-Eclipse/ に従います。 。 。

  1. インストールされているEclipse(Neon)

  2. インストールされたPyDev

  3. Eclipse内から新しいプロジェクトを作成しました(Fileメニュー>新しいプロジェクト >一般>プロジェクトプロジェクト名をクリックし、完了)をクリックしました。

  4. コマンドプロンプトに戻ります(EclipseとPyDev内からこれを行う方法がまだわかっていないため):cdを新しいプロジェクトのルートディレクトリに入れ、仮想環境を作成しました。

  5. 以前と同じように、コマンドプロンプトで、新しいプロジェクトの仮想環境をアクティブ化し、Seleniumモジュールをインストールしてから、chromedriver_linux64.Zipファイルから生成されたchromedriver実行可能ファイルをインストールしました。

  6. Eclipseに戻って、仮想環境を使用するようにプロジェクトにサインアップしました。これは、PyDevの専門用語では仮想環境ではなく、インタープリターと呼ばれていると思います。

    1. ウィンドウメニュー>設定> PyDev>インタープリター>Pythonインタープリター>Add

    2. 通訳に名前を付けます。

    3. Interpreter Executableの場合、プロジェクトの仮想環境のbinディレクトリにあるpython2.7ファイルを選択しました

    4. プロジェクトを右クリックして、Properties>PyDev-Interpreter/Grammar>Interpreterの下で新しいインタープリターを選択>[〜#〜] ok [〜#〜]

  7. プロジェクトに同じスクリプトを与えた。 。 。

    seleniumからインポートwebdriver 
     driver = webdriver.Chrome()

    Runメニューをクリックして実行しました>Run As>Python Run

    しかし、Chrome Webブラウザーウィンドウが開く代わりに、Eclipseのコンソールにメッセージしか表示されません。

    Selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

コマンドプロンプトから同じスクリプトを実行する場合と同じようにWebブラウザーウィンドウを開くには、次のことを試みました。

  • 仮想環境のbinフォルダー(chromedriverファイルがあるため)をインタープリターに追加します。

  • インタプリタを削除して、新しく作成します。

  • chromedriverを自分のスクリプトと同じディレクトリにコピーします。変わりはない。

  • ダウンロードしたchromedriver_linux64.Zipファイルをインタープリターに追加します。まだ同じエラー。

PyDevでスクリプトを作成し、コマンドプロンプトを実行してスクリプトを実行し続けました。 PyDevのデバッグモードで実行できればいいのですが。

Eclipseからスクリプトを実行できるように、PyDevの「PATH」でこの「chromedriver」を取得するにはどうすればよいですか?

10
user1930469

これが最善の方法であるかどうかはわかりませんが、うまくいくと思われるものを見つけました:PATHという名前のすでに利用可能な変数をインタープリターに追加し、その変数の値を編集して、プロジェクトの仮想への相対パスを含めました環境のbinディレクトリ(つまり、chromedriver実行可能ファイルが保存されているディレクトリ)。

より正確に:

  1. Window Eclipseのメニュー> Preferences> PyDev左側> Interpreters> Python Interpreters =。

  2. 私のプロジェクト用に以前に作成したインタープリターを選択しました(上記の質問で説明したとおり)

  3. Preferencesウィンドウの下半分でLibariesからEnvironmentに切り替えられました

  4. 右側の選択...ボタンをクリックしました。

    環境変数の一覧が表示されました。

  5. リストを下にスクロールすると、[〜#〜] path [〜#〜]という名前のものが見つかりました。それを選択し、[〜#〜] ok [〜#〜]ボタンをクリックします。

    それとその値(/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games)は、空のリストに表示されていました。

  6. 私はそれを選択してクリックしました編集...

    その名前と値は編集可能になりました。

  7. 値の右端に:env/binを追加しました(つまり、スクリプトを保持するディレクトリからプロジェクトの仮想環境のbinディレクトリへの相対パス)。

  8. [〜#〜] ok [〜#〜]をクリックして、Preferences window> Applyに戻りますPreferencesウィンドウ> [〜#〜] ok [〜#〜]Preferencesウィンドウを閉じます。

  9. Eclipse内からプログラムを実行しました(スクリプトファイルを選択> Run menu> Run As> Python Run)。

Chrome(まあ、Chromium-これはDebianです))ウィンドウは、コマンドプロンプトからプログラムを実行していたときと同じように開きました。

すごい。

1
user1930469

PATHにchromedriverを配置するすべての試みが失敗した場合は、次のように実行可能パスをwebdriver.Chrome()に渡すこともできます。

chromedriver_loc = '/path/to/chromedriver'
driver = webdriver.Chrome(executable_path=chromedriver_loc)

これは、virtualenvからchromedriverを実行しようとしたときの最終的な解決策でした。

0
tterry