AttributeError:'module'对象没有属性'Firefox'

时间:2017-07-12 18:34:38

标签: python selenium firefox webdriver cygwin

我正在尝试使用selenium webdriver来生成Firefox的一个实例。在过去,我能够在安装geckodriver并确保它在我的PATH中之后执行此操作。然而,我转而使用phantomjs大约一年,而且最近才决定再给Firefox一个旋转。不幸的是,现在当我尝试实例化webdriver.Firefox对象时,我得到一个AttributeError,说该对象没有这样的属性叫做“Firefox”。我不确定导致此错误的原因是什么。

下面是一个shell会话,用于显示我正在使用的环境以及错误的性质:

~$ which python
/cygdrive/c/Python27/python
~$ which geckodriver
/cygdrive/c/Windows/geckodriver
~$ python -i
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> browser = webdriver.Firefox()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Firefox'
>>> dir(webdriver)
['ActionChains', 'DesiredCapabilities', 'PhantomJS', 'Proxy', 'TouchActions', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', 'common', 'phantomjs', 'remote']
>>> print(webdriver.__file__)
C:\Python27\lib\site-packages\selenium\webdriver\__init__.pyc

注意:当我尝试从本机Windows cmd.exe和IDLE运行它时会发生完全相同的事情,所以这个问题似乎并不特定于Cygwin

这在过去有效,我甚至在我的python安装中检查了site-packages目录中的selenium目录,以确认所有必需的文件都在那里。 firefox文件确实存在,所以我不知道他们为什么不被识别

2 个答案:

答案 0 :(得分:3)

所以我仍然不确定在我的selenium安装中发生什么变化导致webdriver.Firefox停止工作,但我能够通过使用

更新selen来修复它
pip install -U selenium

注意:如果你有对selenium库的任何自定义(例如windows上的phantomjs的控制台窗口修复),你应该在用pip更新之前先备份你的东西,然后恢复修改的文件或根据需要重新修改

答案 1 :(得分:1)

我正在研究ubuntu 16.04,我使用geckodriver.exe文件解决了这个问题。

::首先,您必须使用此命令安装硒>>

        for python2:-  python -m pip install --user selenium
        for python3:-  python3 -m pip install --user selenium

::下一步使用下面给出的链接下载geckodriver >>

       https://github.com/mozilla/geckodriver/releases

:::因为我正在使用ubuntu,所以我下载了 geckodriver-v0.24.0-linux64.tar.gz
    现在将其提取。

::现在在python代码中添加以下行>>

 from selenium import webdriver

 browser = webdriver.Firefox(executable_path = '/home/aman/Downloads/geckodriver')
 browser.get('https://www.google.com')
 browser.close()

::在我的电脑上,我将geckodriver提取到 / home / aman / Downloads / geckodriver 中,因此您必须将geckodriver文件的整个路径提取到文件中。

::现在运行此python文件,我希望这一定对您有用。