Selenium 自动化测试入门:简介、环境搭建与架构原理
本篇是 Selenium 自动化测试系列的第一篇,带你从零认识 Selenium,完成环境搭建,并理解其底层架构原理。
一、Selenium 简介
1.1 什么是 Selenium?
Selenium 是一套用于 Web 应用程序自动化测试的开源工具集。它支持多种编程语言(Python、Java、C#、JavaScript、Ruby 等),能够模拟真实用户在浏览器中的操作行为,如点击、输入、导航等。
核心价值:
- 回归测试自动化,减少人工重复劳动
- 跨浏览器兼容性验证
- 支持多种操作系统和编程语言
- 完全开源免费,社区活跃
1.2 Selenium 的三大组件
| 组件 | 说明 |
|---|---|
| Selenium WebDriver | 核心组件,通过浏览器原生驱动直接控制浏览器,支持 Chrome、Firefox、Safari、Edge 等 |
| Selenium Grid | 分布式测试执行工具,可在多台机器、多种浏览器上并行运行测试 |
| Selenium IDE | 浏览器插件,提供录制和回放功能,适合快速生成测试脚本原型 |
本系列重点:我们以 Selenium WebDriver + Python 为主线进行讲解。
二、环境搭建
2.1 安装 Python
确保已安装 Python 3.8+:
python3 --version
2.2 安装 Selenium
pip install selenium
从 Selenium 4.6 开始,Selenium Manager 会自动管理浏览器驱动,无需手动下载 ChromeDriver 或 GeckoDriver。
2.3 验证安装
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# Selenium 4.6+ 自动管理驱动
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
print(driver.title)
driver.quit()
运行成功后,你会看到浏览器自动打开并访问百度,终端输出页面标题。
2.4 推荐开发工具
- IDE:VS Code / PyCharm
- 浏览器:Chrome(推荐)/ Firefox / Edge
- 包管理:pip + venv(虚拟环境)
# 创建虚拟环境
python3 -m venv selenium_env
source selenium_env/bin/activate # macOS/Linux
# selenium_env\Scripts\activate # Windows
pip install selenium
三、Selenium 架构原理
3.1 WebDriver 工作原理
Selenium WebDriver 的核心是一个 Client-Server 架构:
┌──────────────┐ HTTP Request ┌──────────────────┐ Native Command ┌──────────┐
│ │ ──────────────────> │ │ ──────────────────> │ │
│ Test Script │ HTTP Response │ Browser Driver │ Browser Response │ Browser │
│ (Python) │ <────────────────── │ (ChromeDriver) │ <────────────────── │ (Chrome) │
│ │ │ │ │ │
└──────────────┘ └──────────────────┘ └──────────┘
执行流程:
- 测试脚本通过 Selenium 客户端库发送 HTTP 请求到浏览器驱动
- 浏览器驱动将请求转发给浏览器
- 浏览器执行操作并将结果逐层返回
3.2 JSON Wire Protocol vs W3C WebDriver Protocol
| 特性 | JSON Wire Protocol (旧) | W3C WebDriver Protocol (新) |
|---|---|---|
| 标准化 | Selenium 自定义 | W3C 官方标准 |
| 兼容性 | 需要驱动层转换 | 浏览器原生支持 |
| 状态 | 已废弃(Selenium 4+) | 当前标准 |
Selenium 4 全面采用 W3C WebDriver Protocol,所有主流浏览器(Chrome 75+、Firefox 52+、Edge 75+)均已原生支持,通信更稳定、更快速。
3.3 关键概念
- Session:每次
driver = webdriver.Chrome()会创建一个新的浏览器会话,对应一个唯一的 Session ID - Commands:所有操作(如
find_element、click、send_keys)都被封装为标准的 WebDriver 命令 - Capabilities:通过
Options配置浏览器的启动参数(如无头模式、窗口大小等)
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless") # 无头模式
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=options)
driver.get("https://www.baidu.com")
print(f"Session ID: {driver.session_id}")
driver.quit()
四、总结
本篇介绍了 Selenium 的核心组件、完整的环境搭建流程,以及 WebDriver 的底层架构原理。理解这些基础知识,有助于后续编写更稳定、更高效的自动化测试脚本。

浙公网安备 33010602011771号