【问题标题】:Python - Selenium in Ubuntu OSError: [Errno 20] Not a directoryPython - Ubuntu OS 中的 Selenium 错误:[Errno 20] 不是目录
【发布时间】:2016-10-16 17:58:18
【问题描述】:

在 Ubuntu 中安装 Selenium 并将 geckodriver 添加到路径后,运行时出现此错误

from selenium import webdriver

driver = webdriver.Firefox()

错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 135, in __init__
self.service.start()
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/common/service.py", line 64, in start
stdout=self.log_file, stderr=self.log_file)
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 20] Not a directory

发生了什么事?

编辑:使用 chromedriver 而不是 geckodriver 解决。

【问题讨论】:

  • 您是否尝试过在您的driver = webdriver.Firefox() 行中提供geckodriver 的路径?它可能只是找不到驱动程序。
  • @THeeren 你的意思是像 driver = webdriver.Firefox("/home/User/Downloads/wires") 吗?我试过并得到这个错误`Traceback(最近一次调用最后):文件“”,firefox_profile = FirefoxProfile(firefox_profile)文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox /firefox_profile.py”,第 78 行,在 init ignore=shutil.ignore_patterns("parent.lock", "lock", ".parentlock")) 文件 "/usr/lib/python2.7 /shutil.py",第 171 行,在 copytree names = os.listdir(src) OSError: [Errno 20] Not a directory: '/home/User/Downloads/wires'`
  • 您至少需要提供包括驱动程序名称在内的完整路径。我用的是chromedriver。对于 Firefox 驱动程序,您可能需要先创建配置文件。
  • 我遇到了同样的错误。我尝试使用 chromedriver 和 geckodriver。我正在使用 ubuntu 16.10。

标签: python selenium ubuntu


【解决方案1】:

遇到了同样的问题。有两种方法可以帮我解决这个问题:

在 webdriver 中添加 executable_path 参数:

driver = webdriver.Firefox(executable_path='/path/to/geckodriver')

第二种方法是使用导出添加包含 geckodriver 的文件夹(仅文件夹,而不是 geckodriver):

$ export PATH=$PATH:/path/to/

【讨论】:

  • 谢谢@Poloq .. 你节省了我的时间:driver = webdriver.Firefox(executable_path='/path/to/geckodriver') 为我工作...
  • 这很奇怪,我确实使用了导出选项,但它没有用,但是在 python 代码中指定 executable_path 有效......关于为什么的任何想法?
  • 非常感谢。我浪费了更多的时间。终于成功了。
  • 一年后也非常有用
【解决方案2】:

除了@Poloq 的回答之外,最简单的方法是将您的geckodriver 二进制文件保存在您的PATH 中已经存在的目录中。

mv geckodriver /usr/local/bin

这样您可以避免在项目中进行额外的设置/配置,但缺点是在不同系统上部署时需要额外的步骤。

【讨论】:

  • 你的答案是正确的,但你应该写cp,而不是mv
【解决方案3】:

问题是您将“geckodriver”重命名为“wires”。

解决方案是将“geckodriver”添加到搜索路径,然后它应该可以工作。

【讨论】:

    【解决方案4】:

    除了提供的答案外,还有这个选项可以将驱动复制到/usr/bin

    sudo cp geckodriver /usr/bin 
    

    【讨论】:

      【解决方案5】:

      Selenium 可从 Ubuntu 16.04 及更高版本的默认 Ubuntu 存储库中获得。要安装 selenium,请打开终端并输入:

      sudo apt install python-selenium # for Python 2.x
      

      和/或

      sudo apt install python3-selenium # for Python 3.x  
      

      然后键入 python 启动 Python 解释器,从 selenium import webdriver 应该像这样工作:

      $ python  
      >>> from selenium import webdriver
      

      假设路径 ~/.local/bin 在你的执行 PATH 中,下面是如何安装 Firefox webdriver,称为 geckodriver:

      wget https://github.com/mozilla/geckodriver/releases/download/v0.20.1/geckodriver-v0.20.1-linux64.tar.gz
      tar xvfz geckodriver-v0.20.1-linux64.tar.gz
      mv geckodriver ~/.local/bin
      

      来源: https://askubuntu.com/questions/1041541/i-want-to-install-selenium-webdriver-in-my-ubuntu-16-04-system-for-python

      【讨论】:

        猜你喜欢
        • 2021-09-19
        • 2016-11-18
        • 1970-01-01
        • 2021-04-09
        • 2014-08-21
        • 2022-12-07
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多