目录
- 前置准备:安装 Python 和浏览器
- 核心步骤:安装 Selenium 库
- 下载 WebDriver 浏览器驱动
- Chrome (ChromeDriver)
- Firefox (GeckoDriver)
- Edge (EdgeDriver)
- Safari (SafariDriver - 特殊)
- 编写第一个 WebDriver 脚本
- 高级配置与最佳实践
- 使用
Service对象(推荐方式) - 设置浏览器启动选项
- 使用 WebDriver Manager(强烈推荐,告别手动下载)
- 无头模式
- 设置窗口大小
- 配置下载路径
- 使用
- 常见问题与解决方案
前置准备:安装 Python 和浏览器
在开始之前,请确保您的电脑上已经安装了:

- Python: 建议使用 Python 3.6+ 版本,您可以从 Python 官网 下载并安装。
- 浏览器: 您需要安装一个浏览器,Chrome、Firefox 或 Edge,本指南将以 Chrome 和 Firefox 为例。
您可以通过在终端或命令提示符中运行 python --version 或 python3 --version 来检查 Python 是否已安装。
核心步骤:安装 Selenium 库
Selenium 是一个用于自动化 Web 浏览器的 Python 库,您需要通过 pip(Python 的包管理器)来安装它。
打开您的终端或命令提示符,运行以下命令:
# 安装最新版本的 Selenium pip install selenium
下载 WebDriver 浏览器驱动
WebDriver 是一个独立的可执行程序,它充当 Selenium 和浏览器之间的“翻译官”,您需要为您的浏览器下载对应的驱动程序。

重要概念: WebDriver 的版本需要与您的浏览器版本大致匹配,Chrome 120 版本最好使用 ChromeDriver 120 版本。
手动下载(传统方式)
Chrome (ChromeDriver)
- 查看 Chrome 版本:打开 Chrome 浏览器,点击右上角三个点 -> 帮助 -> Google Chrome,记下版本号(120.0.6099.130)。
- 下载驱动:访问 Chrome for Testing availability,这是一个官方提供的驱动下载页面。
- 找到与您 Chrome 版本最匹配的
chromedriver版本。 - 根据您的操作系统(Win32, x64, mac-x64, mac-arm64)下载对应的 ZIP 压缩包。
- 找到与您 Chrome 版本最匹配的
- 配置路径:
- 将解压后的
chromedriver.exe(Windows) 或chromedriver(macOS/Linux) 文件放置在一个固定的目录下,C:\WebDrivers\。 - 方法 A (推荐):将该目录添加到系统的环境变量
PATH中,这样 Python 就可以在任何位置找到它。 - 方法 B:在代码中指定该文件的完整路径。
- 将解压后的
Firefox (GeckoDriver)
- 查看 Firefox 版本:打开 Firefox,点击右上角三条横线 -> 帮助 -> Firefox,记下版本号。
- 下载驱动:访问 GeckoDriver 下载页面。
- 下载与您 Firefox 版本和操作系统匹配的
geckodriver压缩包。
- 下载与您 Firefox 版本和操作系统匹配的
- 配置路径:与 ChromeDriver 相同,将
geckodriver放入一个固定目录并添加到PATH,或在代码中指定路径。
使用 WebDriver Manager(强烈推荐)
手动下载和管理驱动版本非常繁琐。webdriver-manager 是一个第三方库,可以自动下载、管理和配置正确的 WebDriver 版本。
安装它:
pip install webdriver-manager
这样,您就无需再手动下载任何驱动文件了,webdriver-manager 会在运行脚本时自动处理。

编写第一个 WebDriver 脚本
这里我们提供一个使用 手动下载 和 webdriver-manager 两种方式的脚本示例。
示例 1:使用手动下载的驱动
假设您已经将 chromedriver.exe 放在了 C:\WebDrivers\ 目录下,并且该目录已添加到系统 PATH。
# 1. 导入必要的库
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
import time
# 2. 指定驱动路径 (如果未添加到PATH)
# driver_path = "C:/WebDrivers/chromedriver.exe"
# service = ChromeService(executable_path=driver_path)
# 如果驱动已在PATH中,可以省略 executable_path
service = ChromeService()
# 3. 初始化 WebDriver
driver = webdriver.Chrome(service=service)
# 4. 打开一个网页
driver.get("https://www.baidu.com")
# 5. 进行一些操作
# 找到搜索框输入框
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Selenium")
# 找到“百度一下”按钮并点击
search_button = driver.find_element(By.ID, "su")
search_button.click()
# 等待3秒,观察结果
time.sleep(3)
# 6. 关闭浏览器
driver.quit()
示例 2:使用 webdriver-manager(现代方式)
这种方式更简单、更健壮,推荐新手和项目使用。
# 1. 导入必要的库
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time
# 2. 自动下载并设置驱动
# ChromeDriverManager().install() 会自动下载并返回驱动路径
service = ChromeService(ChromeDriverManager().install())
# 3. 初始化 WebDriver
driver = webdriver.Chrome(service=service)
# 4. 后续步骤与手动方式完全相同
driver.get("https://www.baidu.com")
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Selenium")
search_button = driver.find_element(By.ID, "su")
search_button.click()
time.sleep(3)
# 5. 关闭浏览器
driver.quit()
高级配置与最佳实践
使用 Service 对象(推荐方式)
从 Selenium 4.6.0 开始,推荐使用 Service 对象来管理驱动程序的配置,而不是直接在 WebDriver 初始化时传递 executable_path,上面的示例已经展示了这种方式。
设置浏览器启动选项
您可以在启动浏览器前设置各种选项,例如无头模式、禁用图片、指定下载路径等。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
# 创建选项对象
options = Options()
# 1. 无头模式 (不显示浏览器界面)
# options.add_argument("--headless")
# 2. 禁用图片加载 (可以提高页面加载速度)
# prefs = {"profile.managed_default_content_settings.images": 2}
# options.add_experimental_option("prefs", prefs)
# 3. 设置窗口大小
options.add_argument("--window-size=1920,1080")
# 4. 指定用户代理
# options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
# 初始化 WebDriver
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=options)
driver.get("https://www.example.com")
print(driver.title)
driver.quit()
无头模式
无头模式运行浏览器时不会显示图形界面,非常适合在服务器或 CI/CD 环境中运行。
只需在 options 中添加一行即可:
options.add_argument("--headless")
设置窗口大小
为了确保在不同分辨率下元素定位的准确性,通常需要设置一个固定的窗口大小。
options = Options()
options.add_argument("--window-size=1920,1080")
# 或者
# driver.maximize_window() # 最大化窗口
配置下载路径
这是一个非常实用的功能,可以指定文件的下载目录。
from selenium.webdriver.chrome.options import Options
options = Options()
prefs = {
"download.default_directory": "C:/Users/YourUser/Downloads", # 你的下载路径
"download.prompt_for_download": False, # 不弹出下载确认框
"download.directory_upgrade": True,
"safebrowsing.enabled": True # 启用安全浏览
}
options.add_experimental_option("prefs", prefs)
# 然后在初始化 driver 时传入 options
# driver = webdriver.Chrome(service=service, options=options)
常见问题与解决方案
问题 1:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH
- 原因:Python 找不到
chromedriver.exe文件。 - 解决方案:
- 最佳方案:使用
webdriver-manager库,它会自动处理路径。 - 手动方案:确保
chromedriver.exe文件已下载,并将其所在的目录添加到系统的环境变量PATH中。 - 代码方案:在代码中明确指定
chromedriver.exe的完整路径。
- 最佳方案:使用
问题 2:This version of ChromeDriver only supports Chrome version XXX
- 原因:您的 Chrome 浏览器版本和 ChromeDriver 版本不匹配。
- 解决方案:
- 最佳方案:更新
webdriver-manager,它会自动下载匹配的版本。 - 手动方案:去 Chrome for Testing availability 页面下载与您浏览器版本一致的 ChromeDriver。
- 最佳方案:更新
问题 3:脚本运行非常慢
-
原因:页面加载、元素查找都可能耗时。
-
解决方案:
-
隐式等待:在初始化
driver后设置一个全局等待时间,在查找元素时,如果元素没有立即出现,它会等待最多指定的时间。driver.implicitly_wait(10) # 等待最多10秒
-
显式等待:更精确地等待某个特定条件满足(如元素可见、可点击),这是更推荐的方式。
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待最多10秒,直到ID为"myDynamicElement"的元素出现 element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myDynamicElement")) ) -
禁用图片/动画:如上所述,通过
options禁用非必要资源加载。
-
希望这份详细的指南能帮助您成功配置和使用 Python WebDriver!祝您编码愉快!
