猿问

使用Python的Selenium-Geckoriver可执行文件需要在路径中。

使用Python的Selenium-Geckoriver可执行文件需要在路径中。

我对编程很陌生,一开始Python大约两个月前,我正在检查斯威加特的用Python自动化无聊的东西短信。我使用的是空闲,并且已经安装了Selenium模块和Firefox浏览器。每当我尝试运行Webriver函数时,我都会得到以下内容:

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 specifiedDuring handling of the above exception,
     another exception occurred:Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    browser = webdriver.Firefox()

我想我需要为geckodriver但不知道怎么做,所以有人能告诉我怎么做吗?


30秒到达战场
浏览 1082回答 3
3回答

梵蒂冈之花

selenium.common.exceptions.WebDriverException:消息:“geckoriver”可执行文件需要在路径中。首先,您需要从这里下载最新的可执行geckoriver,以便使用Selenium运行最新的Firefox。实际上,Selenium客户端绑定试图定位geckodriver来自系统的可执行文件PATH..您需要将包含可执行文件的目录添加到系统路径。在Unix系统上,如果使用的是bash兼容的shell,则可以执行以下操作将其附加到系统的搜索路径:export&nbsp;PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step在Windows上,您需要更新路径系统变量,以将完整目录路径添加到可执行的geckoriver中。&nbsp;手动或命令行(不要忘记在系统路径中添加可执行的geckoriver后重新启动系统才能生效)..原理与Unix相同。现在您可以运行代码,如下所示:-from&nbsp;selenium&nbsp;import&nbsp;webdriver browser&nbsp;=&nbsp;webdriver.Firefox()selenium.common.exceptions.WebDriverException:消息:预期的浏览器二进制位置,但无法在默认位置找到二进制,没有提供‘moz:FirefoxOptions.二进制’功能,命令行上没有设置二进制标志异常很清楚地表明,您已经安装了Firefox的其他位置,而Selenium试图找到Firefox并从默认位置启动,但是它找不到。您需要显式地提供Firefox安装的二进制位置,以启动Firefox,如下所示:from&nbsp;selenium&nbsp;import&nbsp;webdriverfrom&nbsp;selenium.webdriver.firefox.firefox_binary&nbsp;import&nbsp;FirefoxBinarybinary&nbsp;=&nbsp; FirefoxBinary('path/to/installed&nbsp;firefox&nbsp;binary')browser&nbsp;=&nbsp;webdriver.Firefox(firefox_binary=binary)
随时随地看视频慕课网APP

相关分类

Python
我要回答