私はプログラミングの初心者で、Python=約2か月前に開始し、SweigartのAutomate the Boring StuffでPython text。Spyderを使用しています。 3、すでにSeleniumモジュールとFirefoxブラウザがインストールされています。pythonファイルで次のコードを使用しました
from Selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://inventwithpython.com')
私はこのエラーを受け取ります:
Message: 'geckodriver' executable needs to be in PATH.
ターミナルに移動してインストールすることに加えて、geckodriver.exeをダウンロードしました。
brew install geckodriver
奇妙なことに、ターミナルに移動して「python」と入力してからコードを入力すると動作しますが、Spyderでファイルを実行すると動作しません。 geckodriver.exeファイルを機能させるにはどこに置く必要がありますか?私はそれをさまざまなフォルダ(pythonファイル、webdriverファイルと同じフォルダ、ユーザービンなど)と同じフォルダ)に入れようとしましたが、同じエラーが発生します
私は同様の質問を見てきましたが、うまくいくものを見つけることができないようです。また、Chromeで試しましたが、chromedriverで同じエラーが発生します。
which geckodriver
/usr/local/bin/geckodriver
私もMacを使用しているので、ファイルパスはWindowsよりも少し難しいです。
解決済み:geckodriver exeを/ Users/sethkillian/anaconda/binに配置しましたが、Spyderで問題なく動作するようになりました。助けてくれてありがとう!
Geckodriverをダウンロードして、/ usr/local/binに入れます。次に、webdriver.Firefoxを次のように使用します。
from Selenium import webdriver
driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
おそらく、パスが見つからない理由を誰かが説明できるでしょう。また、他の誰かが自分のパスの問題をトラブルシューティングするのに役立つことを願っています。
確かに、geckodriverを実行可能な場所に配置できます。私のMacでは、〜/ .local/binを選択しました。これは、ユーザーアカウントに固有の実行可能ファイルが保存される一般的な場所だからです。例えば。 Heroku CLIは〜/ .local/shareに配置されます。また、このアプローチにより、/ usr/local/binなどのシステムの場所に実行可能ファイルを追加するときに、スーパーユーザーがアクセスする必要がなくなります。
次に、.profile内のパスにそれを追加しました
EXPORT PATH=$PATH:~/.local/bin
ターミナルを開いて確認してテストしました:
geckodriver --version
うまくいきました。
しかし、Python仮想環境から、何らかの理由でシステムパスが渡されませんか??
import sys
for p in sys.path:
print(p)
示したもの:
/Users/philip/Devel/myproject
/Users/philip/.virtualenvs/myproject/lib/python36.Zip
/Users/philip/.virtualenvs/myproject/lib/python3.6
/Users/philip/.virtualenvs/myproject/lib/python3.6/lib-dynload
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6
/Users/philip/.virtualenvs/myproject/lib/python3.6/site-packages
そのため、最終的には次のようにパスを指定する必要がありました。
self.browser = webdriver.Firefox(executable_path=r'/Users/philip/.local/bin/geckodriver')
このアプローチはうまく機能しますが、仮想環境でパスを設定できなかった理由を知りたいです。