在PyDev中使用virtualenv运行Selenium Chrome时,如何解决"chromedriver可执行文件需要处于PATH"错误?

use*_*469 10 python selenium pydev virtualenv selenium-chromedriver

短:

https://automatetheboringstuff.com/chapter11上阅读了使用selenium模块控制浏览器后,我试图在PyDev的虚拟环境中运行Selenium Chrome驱动程序.我已经设法从PyDev外部做到了,但是从内部,我得到:

selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

长:

我正在使用Linux Debian 3.10.11-1.

关注https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/,在开始使用PyDev之前,我...

  1. 使用virtualenv设置虚拟环境

    1. 安装virtualenv

      pip install virtualenv
    2. 为我的项目制作了一个目录

      cd ~/temp/
      mkdir my_project
      cd my_mproject
    3. 创建了一个名为的虚拟环境 env

      virtualenv env
    4. 激活了它.

      source env/bin/activate
    5. 进入Python的交互模式,告诉自己我使用的是哪个版本的Python

      python
      Python 2.7.12rc1 (default, Jun 13 2016, 09:20:59) 
      [GCC 5.4.0 20160609] on linux2
  2. 退出交互模式并安装了Selenium的东西

    1. 首先是模块

      pip install selenium
    2. 根据https://groups.google.com/forum/#!topic/obey-the-testing-goat-book/Ty4FQoV3S0Q的建议,安装了chromedriver

      1. cd env/bin/
      2. wget http://chromedriver.storage.googleapis.com/2.22/chromedriver_linux64.zip
      3. unzip chromedriver_linux64.zip
  3. 写了一个小脚本,看看它是否有效

    from selenium import webdriver
    driver = webdriver.Chrome()

    跑吧.Chrome网络浏览器窗口已打开.大.

现在在PyDev中尝试:

大致遵循https://www.caktusgroup.com/blog/2011/08/31/getting-started-using-python-eclipse/...

  1. 安装Eclipse(霓虹灯)

  2. 安装了PyDev

  3. 在Eclipse中,创建了一个新项目(File菜单> New Project > General > Project,输入了Project Name并单击Finish).

  4. 回到命令提示符(因为我还没有发现如何在Eclipse和PyDev中执行此操作):cd'进入我的新项目的根目录并创建一个虚拟环境.

  5. 和以前一样,仍然在命令提示符下,我激活了新项目的虚拟环境并安装了Selenium模块,然后安装了chromedriver文件的可执行chromedriver_linux64.zip文件.

  6. 回到Eclipse中,我注册了我的项目以使用虚拟环境,我猜在PyDev中,它不是一个虚拟环境,而是一个解释器:

    1. 窗口菜单> 首选项 > PyDev > 解释器 > Python解释器 > 添加.

    2. 给翻译一个名字.

    3. 对于Interpreter Executable,我python2.7在项目的虚拟环境bin目录中选择了该文件

    4. 右键单击我的项目,选择Properties > PyDev - Interpreter/Grammar > Under Interpreter选择我的新解释器> OK.

  7. 给我的项目相同的脚本...

    from selenium import webdriver
    driver = webdriver.Chrome()

    并通过单击" 运行"菜单> "运行方式" >" Python运行"来运行它.

    但是,现在,我在Eclipse的控制台中只收到一条消息,而不是Chrome网页浏览器窗口.

    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

要从我从命令提示符运行相同的脚本时打开Web浏览器窗口,我尝试过:

  • 将虚拟环境的bin文件夹(因为那是chromedriver文件所在的位置)添加到解释器.

  • 删除解释器并创建新的解释器.

  • 将其复制chromedriver到我的脚本所在的同一目录中.没有不同.

  • chromedriver_linux64.zip我下载的文件添加到解释器.还是一样的错误.

我一直在继续在PyDev中编写我的脚本,然后转向命令提示符来运行它.希望我能在PyDev的调试模式下运行它.

如何PATH在PyDev 中的" "中获得这个"chromedriver",以便我可以从Eclipse运行脚本?

use*_*469 1

不确定这是否是最好的做法,但我发现了一些似乎有效的方法:我已将名为 PATH 的已可用变量添加到我的解释器中,并且我已编辑该变量的值以包含我的项目虚拟的相对路径环境的bin目录(即我保存可执行文件的目录chromedriver)。

更确切地说:

  1. Eclipse 中的窗口菜单 > Preferences > PyDev位于左侧 > Interpreters > Python Interpreters

  2. 选择我之前为我的项目创建的解释器(如上面的问题所述)

  3. 在“首选项”窗口的下半部分从“库”切换到“环境”

  4. 单击右侧的“选择...”按钮。

    出现环境变量列表。

  5. 向下滚动列表,找到一个名为PATH的列表。选择它并单击“确定”按钮。

    它及其值 ( /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games) 出现在原本为空的列表中。

  6. 我选择了它并单击“编辑”...

    它的名称和值变得可编辑。

  7. 在我添加的值的右侧:env/bin(即从保存脚本的目录到项目的虚拟环境bin目录的相对路径)。

  8. 单击“确定”返回“首选项”窗口 >在“首选项”窗口中应用> 确定”关闭“首选项”窗口。

  9. 从 Eclipse 中运行程序(选择脚本文件 >运行菜单 >运行方式> Python 运行)。

Chrome(嗯,Chromium - 这是 Debian)窗口打开,就像我从命令提示符运行程序时一样。

伟大的。