跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python大前端

Web 自动化测试入门:Selenium 核心原理与实战脚本

Web 自动化测试通过脚本模拟用户操作,有效提升回归测试效率。聚焦 Selenium 框架,解析浏览器、驱动与框架的协同原理,提供基于 Python 的环境搭建步骤及百度搜索案例实战。涵盖元素定位、常用交互 API 及测试金字塔模型应用,帮助开发者构建可落地的 Web 自动化流程,避免常见误区。

Eee_123发布于 2026/3/25更新于 2026/9/852 浏览
Web 自动化测试入门:Selenium 核心原理与实战脚本

在软件测试领域,自动化测试是提升效率、保障版本迭代质量的核心手段。尤其对于后端服务及配套 Web 界面,Web 自动化测试能有效解决回归测试重复劳动、人工操作易出错等问题。本文将从自动化测试基础概念切入,聚焦 Web 自动化测试的核心原理与 Selenium 实战,帮你搭建一套可落地的 Web 自动化测试流程。

在这里插入图片描述

一、自动化测试基础:先搞懂'为什么'和'做什么'

在学习 Web 自动化测试前,我们需要先明确其核心定位。它并不旨在完全'取代人工',而是帮助测试人员提高效率(主要体现在回归测试上),让测试人员将更多精力投入到更复杂的探索性测试中。

1.1 自动化测试的核心目标:回归测试

自动化测试的主要价值体现在回归测试场景:当软件迭代新版本时,需验证新增功能未破坏历史功能;当软件有多个版本并行维护时,需快速验证各版本核心功能的一致性。

这里要避开两个常见误区:

  • 误区 1:'自动化测试能取代人工测试' 自动化测试由脚本驱动,仅能验证预设场景,无法覆盖异常场景(如网络波动、界面兼容性问题),需与人工探索性测试配合。
  • 误区 2:'自动化测试能大幅度降低工作量' 自动化脚本需前期开发与后期维护(如 Web 界面元素变更后,脚本需同步修改),仅在'长期多次回归'场景下才能体现效率优势,短期项目反而可能增加工作量。

1.2 自动化测试分类:别把'不同自动化'混为一谈

'自动化'是统称,不同类型的自动化测试解决的问题截然不同。对开发者而言,需重点关注两类:接口自动化与 Web UI 自动化。

自动化类型测试目标核心价值适用场景
接口自动化验证后端接口(如 HTTP/GRPC)的输入输出正确性不依赖界面,执行速度快,可在开发早期介入后端接口回归、数据正确性验证
Web UI 自动化验证 Web 界面的操作流程与展示效果模拟真实用户操作,覆盖'接口 + 界面'端到端场景前端界面回归、关键业务流程验证

1.3 自动化测试金字塔:如何分配测试资源?

测试圈经典的'自动化测试金字塔'模型,揭示了不同测试类型的投入产出比:

  • 底层:单元测试:投入少、覆盖广、发现问题早,应占自动化测试的 70%;
  • 中层:接口 / 集成测试:衔接前后端,验证模块交互,应占 20%;
  • 顶层:UI 自动化测试:执行慢、维护成本高,仅覆盖核心业务流程,占 10% 即可。

但实际企业中常出现'冰淇淋蛋筒反模式'——过度依赖 UI 自动化而忽视底层测试。自动化测试需要大量的初始投资,找到'突破点',与手动测试相比,我们开始看到它对长期成本产生的积极影响,这两种测试活动是完全兼容的。

在这里插入图片描述

在这里插入图片描述

二、Web 自动化测试核心:环境搭建与驱动管理

Web 自动化测试的本质是'用代码模拟人操作浏览器',需依赖三大组件:浏览器、浏览器驱动、自动化框架(Selenium)。

2.1 核心组件原理:三者如何协同工作?

  • 浏览器:执行界面操作的载体(如 Chrome、Firefox);
  • 浏览器驱动:沟通自动化脚本与浏览器的'桥梁'(如 ChromeDriver),负责解析脚本指令并转化为浏览器可执行的操作;
  • Selenium:Python 编写的自动化框架,提供丰富的 API(如查找元素、模拟点击),简化脚本开发。

三者交互流程如下:

在这里插入图片描述

在这里插入图片描述

2.2 环境搭建:3 步搞定依赖安装

Web 自动化测试依赖 Python 环境(便于快速编写脚本,与 C++ 后端测试工具链兼容),核心安装步骤如下:

步骤 1:安装 Python(3.7~3.11 版本)

步骤 2:安装 Selenium 框架 Selenium 版本需稳定,推荐使用 4.0.0 版本(避免新版本 API 变更导致脚本报错):

pip install selenium==4.0.0

在这里插入图片描述

步骤 3:安装驱动管理工具(webdriver-manager) 传统方式需手动下载浏览器驱动,且浏览器更新后需同步更新驱动,极易出现版本不匹配问题。webdriver-manager 可自动管理驱动版本,彻底解决此痛点:

pip install webdriver-manager

在这里插入图片描述

原理:webdriver-manager会自动检测本地浏览器版本,下载对应版本的驱动,并在脚本运行时自动配置驱动路径。

三、Selenium 实战:写一个百度搜索自动化脚本

掌握环境搭建后,我们通过'百度搜索'案例,实战 Web 自动化测试的核心流程:打开浏览器→访问页面→查找元素→模拟操作→关闭浏览器。

3.1 完整脚本:百度搜索'迪丽热巴'

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

# 1. 打开浏览器----驱动管理
# 安装并获取 Chrome 驱动程序路径
chrome_driver_path = ChromeDriverManager().install()
# 创建谷歌浏览器驱动对象
driver = webdriver.Chrome(service=Service(chrome_driver_path))
time.sleep(2)

# 2. 输入百度网址(网址要完整)
driver.get("https://www.baidu.com")
time.sleep(2)

# 3. 找到百度输入框,输入关键词'迪丽热巴'
# #kw 是搜索框对应的选择器定位方式
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("迪丽热巴")
time.sleep(2)

# 4. 点击'百度一下'按钮
# #su 是'百度一下'按钮的选择器定位方式
driver.find_element(By.CSS_SELECTOR, "#su").click()
time.sleep(2)

# 5. 关闭浏览器
driver.quit()

在这里插入图片描述

常用交互 API:

  • send_keys(text):模拟键盘输入(如输入搜索关键词);
  • click():模拟鼠标左键点击(如点击按钮、链接);
  • clear():清空输入框内容;
  • webdriver.Chrome():创建 Chrome 浏览器实例(若用 Firefox,需改为 webdriver.Firefox())。

Selenium 元素定位方式对比:

定位方式(By 类)语法示例适用场景
By.IDBy.ID, "kw"元素有唯一 id(如百度输入框 id 为 kw)
By.CSS_SELECTORBy.CSS_SELECTOR, "#kw"灵活定位(支持 id、class、标签名组合)
By.XPATHBy.XPATH, "//input[@id='kw']"复杂场景(如定位表格中的第 n 行元素)

Web 自动化测试不是'银弹',但对配套 Web 项目而言,它是回归测试的高效工具。关键在于记住:Web 自动化测试应聚焦核心流程,与接口自动化、单元测试配合,才能最大化测试效率与质量保障能力。

目录

  1. 一、自动化测试基础:先搞懂“为什么”和“做什么”
  2. 1.1 自动化测试的核心目标:回归测试
  3. 1.2 自动化测试分类:别把“不同自动化”混为一谈
  4. 1.3 自动化测试金字塔:如何分配测试资源?
  5. 二、Web 自动化测试核心:环境搭建与驱动管理
  6. 2.1 核心组件原理:三者如何协同工作?
  7. 2.2 环境搭建:3 步搞定依赖安装
  8. 三、Selenium 实战:写一个百度搜索自动化脚本
  9. 3.1 完整脚本:百度搜索“迪丽热巴”
  10. 1. 打开浏览器----驱动管理
  11. 安装并获取 Chrome 驱动程序路径
  12. 创建谷歌浏览器驱动对象
  13. 2. 输入百度网址(网址要完整)
  14. 3. 找到百度输入框,输入关键词“迪丽热巴”
  15. #kw 是搜索框对应的选择器定位方式
  16. 4. 点击“百度一下”按钮
  17. #su 是“百度一下”按钮的选择器定位方式
  18. 5. 关闭浏览器

更多推荐文章

查看全部
  • 五大国产 AI 工具实战指南:豆包即梦剪映飞书扣子
  • Next-AI-Draw.io 开源 AI 绘图工具自托管部署指南
  • Ubuntu 22.04 部署 OpenClaw 自动化助手实战
  • 解决新机型 Copilot 键替代右 Ctrl 键问题
  • Web 项目 UI 自动化测试实战:从零搭建博客系统框架
  • Vue Router 进阶实战:导航守卫、嵌套路由与状态管理
  • Git 多人协作开发流程与分支管理
  • Altium Designer AI 实战:高效 PCB 设计全流程
  • 大语言模型训练指南:从基础概念到微调实战
  • SpringBoot+MyBatis Plus+PostgreSQL 整合常用数据类型(json、array)操作
  • 海外云 AWS、GCP、Azure 与 DigitalOcean 核心区别解析
  • Manual2Skill:利用 VLM 阅读说明书指导机器人家具组装
  • Visual C++ 运行库 AIO 安装工具使用指南
  • 使用 Python 实现微信自动回复功能
  • Linux 系统编程:线程互斥原理与实战指南
  • Python 内置函数 enumerate() 用法详解
  • 使用 ClaudeCode 与 Figma-MCP 实现 UI 设计 1:1 前端还原
  • Ubuntu 20.04 安装 ROS Noetic 指南
  • 文档解析技术在大模型训练与应用中的关键作用
  • 16 篇大模型领域必读论文

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online