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

2024-05-19 09:48:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始编程,大约两个月前开始使用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.

除了进入终端并使用

brew install geckodriver

奇怪的是,如果我进入terminal并键入“python”,然后将代码放入其中,它就会工作,但在Spyder中运行该文件时不会工作。我需要把geckodriver.exe文件放在哪里才能工作?我试过将它放在不同的文件夹中(与python文件相同的文件夹、与webdriver文件相同的文件夹、用户bin中等等),但是我得到了相同的错误

我看过类似的问题,但似乎找不到有效的方法。我也尝试过Chrome,但我得到了相同的错误,但chromedriver。

which geckodriver

产生/usr/local/bin/geckodriver

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


Tags: 模块文件代码文本browser文件夹binselenium
3条回答

下载geckodriver并放入/usr/local/bin; 然后使用webdriver.Firefox,如下所示:

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

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

你当然可以把壁虎放在任何你喜欢的地方。在我的Mac上,我选择了~/.local/bin,因为它是存储特定于用户帐户的可执行文件的常用位置。例如。Heroku CLI位于~/.local/share中。这种方法还消除了向/usr/local/bin这样的系统位置添加可执行文件时对超级用户访问的需要

然后我用

    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')

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

解决方法:我将geckodriver exe放在/Users/sethkillian/anaconda/bin中,现在它可以在Spyder中正常工作。谢谢你的帮助!

相关问题 更多 >

    热门问题