消息:'geckodriver'可执行文件需要在PATH中,但它已经是?

时间:2017-06-16 22:51:09

标签: python-2.7 selenium selenium-chromedriver geckodriver

我正在编写一个脚本,用于保存网页的完整内容。如果我尝试使用urllib2和bs4,它只会在导航到页面内的搜索后写入登录页面的内容而不会写入任何内容。但是,如果我在搜索结果页面上执行ctrl + s,则会将html文件保存到磁盘,该文件在文本编辑器中打开时会包含搜索结果中的所有内容。

我已经在这里阅读了几篇关于这个主题的帖子,我正在尝试使用这个中的步骤:

How to save "complete webpage" not just basic html using Python

但是,在安装geckodriver并设置sys path变量后,我继续遇到错误。这是我的有限代码:

from selenium import webdriver
>>> from selenium.webdriver.common.action_chains import ActionChains
>>> from selenium.webdriver.common.keys import Keys
>>> br = webdriver.Firefox()

这是错误:

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python27\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 142, in __init__
    self.service.start()
  File "C:\Python27\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start
    os.path.basename(self.path), self.start_error_message)
WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

这是我设置sys path变量的地方:

enter image description here

设置sys path变量后我重新启动了。

更新:

我现在正在尝试使用chromdriver,因为这似乎更直接。我从chromedriver的下载页面下载了hromedriver_win32.zip II'm在windows笔记本电脑上,将environmetal变量路径设置为: C:\ Python27 \ LIB \站点包\硒\的webdriver \铬\ chromedriver.exe

但是我得到了类似的跟随错误:

>>> br = webdriver.Chrome()
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python27\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 62, in __init__
    self.service.start()
  File "C:\Python27\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start
    os.path.basename(self.path), self.start_error_message)
WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

1 个答案:

答案 0 :(得分:0)

您还必须手动将Firefox的路径添加到系统变量中,  你可能已经安装了firefox其他位置,而Selenium试图找到firefox并从默认位置启动,但它无法找到。您需要明确提供firefox安装的二进制位置:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/installed firefox binary')
browser = webdriver.Firefox(firefox_binary=binary)
browser = webdriver.Firefox()