首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileNotFoundError:[Errno 2]在MAC中没有这样的文件或目录:“GeckoDriver”:“GeckoDriver”,带有GeckoDriver和Python

FileNotFoundError:[Errno 2]在MAC中没有这样的文件或目录:“GeckoDriver”:“GeckoDriver”,带有GeckoDriver和Python
EN

Stack Overflow用户
提问于 2018-10-24 02:45:03
回答 2查看 8.5K关注 0票数 2

我已经创建了一个使用python在Eclipse中打开url的测试脚本,并得到了以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 76, in start
    stdin=PIPE)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 769, in __init__
    restore_signals, start_new_session)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 1516, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver': 'geckodriver'

在处理上述异常的过程中,发生了另一个异常:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Applications/Eclipse.app/Contents/MacOS/C:\EclipseWorkspaces\csse120/PythonSeleniumProject/src/PythonSeleniumModule.py", line 13, in <module>
    driver = webdriver.Firefox()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 83, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

我读过关于相关主题的堆叠溢出,但是没有一个能回答/解决我的问题。

请给我建议。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-10-24 10:09:49

这个错误信息..。

代码语言:javascript
复制
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver': 'geckodriver'
.
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

...implies表示您的程序无法在上述目录中找到GeckoDriver

根据您使用的代码测试:

代码语言:javascript
复制
driver = webdriver.Firefox()

由于您没有显式地提到GeckoDriver的绝对路径,所以程序在基础操作系统路径变量中提到的路径中搜索GeckoDriver,并且无法定位。

解决方案

  • 当您在Mac上下载最新的geckodriver-v0.23.0-macos.tar.gzmozilla/geckodriver,存储在您的系统内的任何地方。
  • 在您的程序中,通过参数executable_path覆盖操作系统路径变量中提到的路径,如下所示: 从selenium导入webdriver = webdriver.Firefox(executable_path='/path/to/geckodriver') print("Firefox调用“) driver.get('http://google.com/') driver.quit()
票数 3
EN

Stack Overflow用户

发布于 2020-03-10 12:53:03

根据您所选择的绝对路径,上述解决方案不会在每台机器上工作。此外,可以通过任何程序访问的绝对路径,例如根文件夹,都需要管理权限。

存在的每个Selenium WebDriver都有一个DriverManager模块,您可以使用它自动在PATH变量内的目录中安装WebDriver。

只安装一次是很重要的。再做一次就会导致错误,我还没有找到克服这些错误的方法。

首先,如果您使用的是pip install webdriver-managerpip3,请在Python3环境中安装webdriver。

在您的代码上这样做,它会运行得很好:

代码语言:javascript
复制
from webdriver_manager.firefox import GeckoDriverManager

try:
    driver = webdriver.Firefox()
except Exception:
    driver = webdriver.Firefox(GeckoDriverManager().install())

因此,它将只安装一次在机器上使用该程序。

注意:这与OperaDriver有一些问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52960368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档