我正在用Python文本阅读Sweigart的《自动化无聊的东西》。我正在使用IDLE,并且已经安装了Selenium模块和Firefox浏览器。

每当我试图运行webdriver函数,我得到这个:

from selenium import webdriver
browser = webdriver.Firefox()

例外:

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0E08128>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start
    stdout=self.log_file, stderr=self.log_file)
  File "C:\Python\Python35\lib\subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "C:\Python\Python35\lib\subprocess.py", line 1224, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

在处理上述异常时,发生了另一个异常:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    browser = webdriver.Firefox()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in __init__
    self.service.start()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

我想我需要为geckodriver设置路径,但我不确定如何,所以我该如何做到这一点?


当前回答

最简单的方法为Windows!

从这里下载最新版本的geckodriver。将geckodriver.exe文件添加到Python目录(或PATH中已经存在的任何其他目录)。这应该能解决问题(在Windows 10上进行了测试)。

其他回答

在Windows 10上,我下载geckodriver.exe就可以了。我只是更新了火狐浏览器。

下面是我使用的代码:

from selenium import webdriver
driver = webdriver.Firefox(
    executable_path=r'C:\Users\Usuario\Desktop\Automate the boring stuff with python exercises\Web Scraping\geckodriver.exe')
driver.get('http://inventwithpython.com')

Windows用户

使用原始代码,因为它是:

from selenium import webdriver
browser = webdriver.Firefox()
driver.get("https://www.google.com")

然后从mozilla/geckodriver下载驱动

把它放在一个固定的路径(永久地)…作为一个例子,我把它放在:

C: \ Python35

然后进入系统的环境变量。在“系统变量”网格中寻找Path变量并添加:

; C: Python35喝geckodriver

Geckodriver,不是Geckodriver .exe。

这为我解决了问题。

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'your\path\geckodriver.exe')
driver.get('http://inventwithpython.com')

确保您有正确版本的驱动程序(geckodriver), x86或64。 确保您正在检查正确的环境。例如,作业在Docker容器中运行,而环境在主机操作系统上检查。

Selenium在他们的描述中回答了这个问题。rst文件:

司机 = = = = = = = Selenium需要一个驱动程序来与所选的浏览器交互。Firefox, 例如,需要geckodriver <https://github.com/mozilla/geckodriver/releases>_,在运行下面的示例之前需要安装它。确保它在你的PATH中,例如,将它放在/usr/bin或/usr/local/bin中。

如果没有注意到这一步,将会出现一个错误:selenium.common.exceptions.WebDriverException: Message: 'geckodriver'可执行文件需要在PATH中。

基本上只需要下载geckodriver,解包并将可执行文件移动到/usr/bin文件夹。