【问题标题】:Selenium in Python on Mac - Geckodriver executable needs to be in PATHMac 上 Python 中的 Selenium - Geckodriver 可执行文件需要在 PATH 中
【发布时间】:2017-05-17 02:25:21
【问题描述】:

我是编程新手,大约 2 个月前开始使用 Python,现在正在阅读 Sweigart 的 Automate the Boring Stuff with 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 文件相同的文件夹,在用户 bin 中,等等),但我得到了同样的错误

我查看了类似的问题,但似乎找不到有效的方法。我也尝试过使用 Chrome,但使用 chromedriver 时出现同样的错误。

which geckodriver

收益/usr/local/bin/geckodriver

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

【问题讨论】:

  • which geckodriver 的结果是什么?
  • 在终端结果是 /usr/local/bin/geckodriver
  • 当你在控制台(终端)上运行which geckodriver - 你得到什么输出?
  • 好像存放在本地bin里
  • 请让我知道有关您的环境的更多信息。我在 python 3.5.0、pyQt5、selenium 3.0.2、geckodriver 0.11.1 和 mac OS 上运行了 spyder。效果很好。

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


【解决方案1】:

下载geckodriver,放到/usr/local/bin; 然后像这样使用 webdriver.Firefox:

from selenium import webdriver
driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')

【讨论】:

    【解决方案2】:

    已解决:我将 geckodriver exe 放在 /Users/sethkillian/anaconda/bin 中,现在它可以在 Spyder 上正常运行。感谢您的帮助!

    【讨论】:

      【解决方案3】:

      也许有人可以解释为什么找不到路径。我也希望这可以帮助其他人解决他们自己的路径问题。

      您当然可以将 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')
      

      这种方法效果很好,但我还是想知道为什么我不能在虚拟环境中设置路径。

      【讨论】:

      • 我是用brew安装的,它在,/opt/homebrew/bin/geckodriver路径,我该怎么办?
      【解决方案4】:

      如果您在 MACos 上并且正在运行 PyCharm,我也无法让我的项目在 /usr/local/bin 中找到任何东西,我安装了 geckodriver。 $PATH 是正确的,我可以在终端的任何文件夹中运行它。 因此,我将二进制文件复制到 \venv\bin 以用于我正在运行的项目,它就像一个魅力 - 实际上是 PyCharm! :P

      【讨论】:

        【解决方案5】:

        只需从此处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())

        【讨论】:

        • 欢迎来到 Stack Overflow!请注意,您正在回答一个非常古老且已经回答的问题。这是How to Answer的指南。
        【解决方案6】:

        我对 Mac OS Catalina + Firexfox 的解决方案是正确设置 firefox 的路径

        导出 PATH=/Applications/Firefox.app/Contents/MacOS/:${PATH}

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-05
          • 2018-03-25
          • 2022-01-16
          • 2018-07-11
          • 2017-11-21
          相关资源
          最近更新 更多