我刚刚开始编程,大约2个月前开始使用Python,我正在浏览Sweigart用Python文本自动化无聊的东西。我使用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.exebrew install geckodriver
奇怪的是,如果我进入终端并键入" python"然后把代码放进去,它可以工作,但是当我在Spyder中运行文件时却没有。我在哪里可以放置geckodriver.exe文件?我已经尝试将它放在各种文件夹中(与python文件相同的文件夹,与webdriver文件相同的文件夹,在用户bin中,依此类推)但是我得到了同样的错误
我看过类似的问题,但似乎找不到有用的东西。我也曾尝试使用Chrome,但我得到了相同的错误,但是使用了chromedriver。
which geckodriver
收益/usr/local/bin/geckodriver
我也在Mac上,因此文件路径对我来说比在Windows上要困难一些。
答案 0 :(得分:12)
下载geckodriver并将其放入/ usr / local / bin; 然后像这样使用webdriver.Firefox:
from selenium import webdriver
driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
答案 1 :(得分:3)
解决:我将geckodriver exe放在/ Users / sethkillian / anaconda / bin中,现在它可以在Spyder上运行,没有任何问题。谢谢你的帮助!
答案 2 :(得分:1)
如果您使用的是Macos并且正在运行PyCharm,那么我也无法在安装了geckodriver的/ usr / local / bin中找到我的项目。 $ PATH是正确的,我可以在终端的任何文件夹上运行它。 因此,我将二进制文件复制到了我正在运行的项目的\ venv \ bin中,它的工作原理很像-PyCharm! :P
答案 3 :(得分:0)
也许有人可以解释为什么找不到路径。而且我也希望这有助于其他人解决他们自己的路径问题。
你当然可以把geckodriver执行到任何你想要的地方。在我的Mac上,我选择〜/ .local / bin,因为它是存储特定于用户帐户的可执行文件的常见位置。例如。 Heroku CLI放在〜/ .local / share中。在将可执行文件添加到/ usr / local / bin等系统位置时,此方法也消除了对超级用户访问的需要
然后我将它添加到我的.profile中的路径
EXPORT PATH=$PATH:~/.local/bin
我通过打开终端进行测试并检查:
geckodriver --version
工作得很好。
但是从Python虚拟环境出于某种原因,系统路径没有传递?我通过添加到我的selenium测试脚本中发现了这一点:
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')
这种方法很好,但我仍然想知道为什么我无法在虚拟环境中设置路径。
答案 4 :(得分:0)
从这里executables
轻松下载与您的操作系统匹配的可执行文件。解压缩并将可执行文件放入项目中的所需文件夹中
使用** os **或任何路径库获取可执行文件的路径
import os
from selenium import webdriver
path_executable = os.path.abs( path/to/executable )
browser = webdriver.Firefox( executable_path= path_executable )
或者您需要一些灵活的东西,无论操作系统如何,都不需要它,也不需要下载可执行文件,但是它使用pip来安装Webdriver Manager webdriver manager doc $ pip install webdriver_manager
和from selenium import webdriver
的速度较慢
from webdriver_manager.firefox import GeckoDriverManager
browser=webdriver.Firefox(executable_path=GeckoDriverManager().install())