python之Selenium介绍

Selenium 是一个用于Web 自动化测试与浏览器自动化控制的开源工具套件,广泛用于:

  • UI 自动化测试(回归测试、功能测试)
  • 爬虫模拟(绕过简单反爬)
  • 自动化运维(登录、表单操作、系统巡检)
  • RPA(机器人流程自动化)

核心能力:

  • 控制真实浏览器(Chrome / Firefox / Edge 等)
  • 模拟用户行为(点击、输入、滚动、JS执行)
  • 支持多语言(Java / Python / Go / JS 等)

1.Selenium 组件架构

Selenium 并不是单一工具,而是一个组件体系:

flowchart LR
    A[Test Script
Python/Java] --> B[Selenium Client API] B --> C[WebDriver Protocol] C --> D[Browser Driver
chromedriver/geckodriver] D --> E[Browser
Chrome/Firefox]

2. 核心组件拆解

65909ea19cd1ca613fd05359eeb1999a.png

2.1 Selenium Client(客户端库)

作用:

  • 提供开发接口(API)
  • 支持多语言调用

常见语言绑定:

  • Python:selenium
  • Java:selenium-java
  • JavaScript:selenium-webdriver

示例(Python):

1
2
3
4
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

2.2 WebDriver(核心控制协议)

WebDriver 是 Selenium 的核心抽象层,负责:

  • 定义浏览器控制标准(W3C WebDriver)
  • 统一不同浏览器的操作方式

核心思想:

用 HTTP + JSON 协议控制浏览器

典型请求:

1
POST /session/{sessionId}/element

2.3 Browser Driver(浏览器驱动)

作用:

  • 作为 WebDriver 与浏览器之间的桥梁
  • 将标准指令转换为浏览器原生操作

常见驱动:

浏览器 Driver
Chrome chromedriver
Firefox geckodriver
Edge msedgedriver
Safari safaridriver

工作机制:

sequenceDiagram
    participant Test
    participant WebDriver
    participant Driver
    participant Browser

    Test->>WebDriver: click()
    WebDriver->>Driver: HTTP request
    Driver->>Browser: DevTools/Native API
    Browser-->>Driver: result
    Driver-->>WebDriver: response
    WebDriver-->>Test: return

2.4 Selenium Server(Grid / Remote)

用于分布式执行测试:


2.5 Selenium Grid(分布式执行)

flowchart TD
    A[Test Runner] --> B[Hub]
    B --> C[Node1 Chrome]
    B --> D[Node2 Firefox]
    B --> E[Node3 Edge]

组件:

  • Hub:调度中心
  • Node:执行节点

2.6 Selenium IDE(已弱化)

ed28f5843450148ad0da390863f953e7.png

  • 浏览器插件(Chrome/Firefox)插件化进阶
  • 录制 + 回放测试步骤
  • 适合初学者,不适合复杂场景

3. Selenium 4 新架构(重点)

Selenium 4 引入:

3.1 W3C 标准统一

  • 废弃 JSON Wire Protocol
  • 完全兼容浏览器标准

3.2 内置 DevTools 支持(CDP)

可以直接操作 Chrome DevTools

  • 网络抓包
  • 性能分析
  • 拦截请求

4. 执行流程(底层视角)

463681c9c5a6fac0d4cc74cc393a4d36.png

flowchart TD
    A[测试代码] --> B[Client API]
    B --> C[WebDriver协议]
    C --> D[Driver]
    D --> E[浏览器引擎]
    E --> F[DOM/JS执行]
    F --> E
    E --> D
    D --> C
    C --> B
    B --> A

5. Selenium vs 其他方案

5.1 vs Playwright

对比项 Selenium Playwright
协议 WebDriver DevTools
性能 较慢 较快
多浏览器
自动等待
复杂操作

👉 结论:

  • 测试标准化 → Selenium
  • 高性能自动化 → Playwright

6. 总结

Selenium的核心可以归纳为三点:

  1. 标准协议(WebDriver)
  2. 驱动桥接(Browser Driver)
  3. 真实浏览器执行

本质不是“自动化工具”,而是:

一个跨浏览器控制标准 + 分布式执行体系