首页 > 解决方案 > 无法在 PATH 中找到 chromedriver,或者在显式提供给 webdriver.Chrome() 时

问题描述

我正在尝试在 Windows 10 上将 chromedriver 与 Selenium 一起使用,但出现以下错误:

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

这是我的测试脚本:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

我已经尝试了很多东西。下面我会详细介绍。

我试图将路径添加chromedriver到 PATH。图片在这里:

在此处输入图像描述

这很好用,因为我可以从命令行运行chromedriver

C:\Users\KraftWurk>chromedriver
Starting ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

但是,当我运行我的脚本时,我得到了chromedriver需要在 PATH 中的错误......它是,所以不确定那里发生了什么。

我已阅读以下内容:Python Selenium Chrome Webdriver

我尝试使用以下方法提供建议的路径:

driver = webdriver.Chrome(executable_path=r"C:\drivers\chromedriver.exe")

我仍然收到同样的警告。

我不太确定发生了什么事。我在 Windows 10 上使用 Python 3.7。Selenium 3.141.0 和 Chromedriver 74.0.3729.6

标签: seleniumselenium-chromedriver

解决方案


为了消除大量手动工作和不兼容问题,我建议您使用 WebDriverManager,因为它会自动下载所需的二进制文件,我们不需要设置任何路径。

它支持 Chrome、Firefox、PhantomJS、Microsoft Edge 或 Internet Explorer 等浏览器。

我们如何在我们的项目中使用它?

仅需要设置是使用“pip”安装此软件包。

点安装 webdriver_manager

而已!我们都准备好了。只需将此模块导入您的 python 项目并开始使用它。

对于铬:

from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver 
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
driver.get("http://www.google.com/") 
print driver.title
driver.quit() 

对于火狐:

from webdriver_manager.firefox import GeckoDriverManager 
from selenium import webdriver
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get("http://www.google.com/") 
print driver.title 
driver.quit()

对于边缘:

from webdriver_manager.microsoft import EdgeDriverManager
from selenium import webdriver
driver = webdriver.Edge(executable_path=EdgeDriverManager().install()) 
driver.get("http://www.google.com/") 
print driver.title 
driver.quit() 

对于 IE:

from webdriver_manager.microsoft import IEDriverManager
from selenium import webdriver 
driver = webdriver.Ie(executable_path=IEDriverManager().install())   
driver.get("http://www.google.com/") 
print driver.title 
driver.quit()

默认情况下,webdriver_manager 会尝试下载给定驱动程序二进制文件的最新版本。要使用特定版本的驱动程序,请传递驱动程序版本,如下所示。

webdriver.Chrome(executable_path=ChromeDriverManager("2.42").install())

推荐阅读