Mac上的Python中的Selenium - Geckodriver可执行文件需要在PATH中

时间:2017-01-03 03:27:16

标签: python selenium firefox selenium-webdriver selenium-chromedriver

我刚刚开始编程,大约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.exe
brew install geckodriver

奇怪的是,如果我进入终端并键入" python"然后把代码放进去,它可以工作,但是当我在Spyder中运行文件时却没有。我在哪里可以放置geckodriver.exe文件?我已经尝试将它放在各种文件夹中(与python文件相同的文件夹,与webdriver文件相同的文件夹,在用户bin中,依此类推)但是我得到了同样的错误

我看过类似的问题,但似乎找不到有用的东西。我也曾尝试使用Chrome,但我得到了相同的错误,但是使用了chromedriver。

which geckodriver

收益/usr/local/bin/geckodriver

我也在Mac上,因此文件路径对我来说比在Windows上要困难一些。

5 个答案:

答案 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_managerfrom selenium import webdriver的速度较慢 from webdriver_manager.firefox import GeckoDriverManager browser=webdriver.Firefox(executable_path=GeckoDriverManager().install())