尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Pytest+Selenium入门:从零开始直接实战写自动化测试

Pytest+Selenium入门:从零开始直接实战写自动化测试
📅 发布时间:2026/7/10 6:04:42

刚开始学自动化测试的时候我就发现,很多教程一上来就是大量前置概念讲解,不少同学刷了十节课下来,还是连完整的脚本都跑不起来。其实对入门来说,动手实践才是最高效的学习方式。这篇文章就跳过冗余的理论铺垫,直接带你上手写代码,适合有一点代码基础、想在实战中边做边学的同学。以下贴出了用到的工具,需要全部配置成功再学习。

搭完第一个百度新闻搜索的小项目,把项目里每个目录文件的作用、驱动下载的方法和新手最容易踩的坑都整理了一遍,纯小白视角的学习笔记,帮同样刚入门的小伙伴少走弯路。

项目代码贴在最后了。

用到的工具总览

按作用分为 4 大类,是 Web UI 自动化测试的标准技术栈:

  1. 运行基础:Python 3.14

所有测试代码的编写与运行环境,提供基础语法和标准库,支撑第三方测试工具运行。

  1. 测试框架:pytest

自动化测试的执行与管理工具,自动识别test_开头的测试用例,执行测试并输出通过 / 失败结果,是自动化测试的核心管理框架。

  1. 自动化核心:Selenium + ChromeDriver + Chrome 浏览器
    • Selenium:Web 自动化核心库,提供元素定位、输入、点击、页面跳转等全套浏览器操作 API。
    • ChromeDriver:Chrome 官方驱动,充当代码与浏览器之间的通信桥梁,把代码指令转为浏览器的实际操作。
    • Chrome 浏览器:自动化测试的执行载体,也就是被控制、被测试的目标浏览器。
  2. 开发工具:VS Code

代码编辑器,配合 Python 插件提供代码补全、语法检查、自动格式化、内置终端等能力,用于编写和调试测试脚本。

补充:过程中接触过webdriver-manager驱动自动管理工具,因网络限制,最终改用本地手动放置驱动的方案。

一、项目根目录文件说明

给大家拆解一下项目里每个文件和文件夹都是干嘛的,刚接触的时候不用死记,知道作用就行:

  1. PY(项目根目录):你创建的项目文件夹,所有代码和依赖文件都放在这里面。
  2. .pytest_cache:pytest 自动生成的测试缓存目录,保存历史运行记录以加快后续执行速度,可随意删除,不影响代码功能。
  3. .vscode/settings.json:VS Code 的项目专属配置文件,存放 pytest 框架启用、代码自动格式化、终端中文编码等项目级规则。
  4. __pycache__:Python 自动生成的字节码缓存目录,存放编译后的 .pyc 文件以加快脚本启动速度,可随意删除。
  5. test_baidu_news_search.py:核心测试脚本文件,存放百度新闻搜索的测试用例代码,是 pytest 执行测试的核心业务文件。
  6. chromedriver.exe:Chrome 浏览器驱动程序,是 Selenium 代码与浏览器之间的通信桥梁,版本需与 Chrome 浏览器大版本匹配。下载后将 chromedriver.exe 放在项目文件夹下。

二、ChromeDriver 手动配置与国内下载地址

我这里用的是手动配置浏览器驱动的方式,主要是避免自动匹配驱动时因为网速问题导致运行失败,更稳定可控。手动配置的核心要求就是:chromedriver.exe 文件版本必须和自己的 Chrome 浏览器版本匹配。(用其他浏览器也是一样的,需要找到相关驱动)

给大家整理了国内高速镜像地址,下载比官网快很多,按自己的浏览器版本选对应的入口:

  1. 新版驱动(Chrome 115.0.5763.0 及以上版本)

Chrome 115 之后官方更换了驱动仓库,所有高版本驱动都在这里:

CNPM Binaries Mirror

  1. 旧版驱动(Chrome 114 及更低版本)

仅当使用老版本 Chrome 时用这个地址:

CNPM Binaries Mirror

三、测试脚本完整执行流程

给大家梳理一下这个百度新闻搜索脚本的完整执行逻辑,新手可以对着代码一步步对应,理解每一步在做什么:

初始化驱动 → 配置浏览器 → 打开百度新闻 → 定位搜索框 → 输入关键词 → 回车搜索 → 等待页面加载 → 验证结果 → 关闭浏览器

四、新手高频踩坑提醒

这个是我自己踩了好多次的坑,一定要记牢:

改完代码一定要按Ctrl+S保存,否则运行的还是旧代码,会一直报同样的错,排查半天找不到原因。

保存文件后,在终端执行以下命令即可运行测试:

python -m pytest tests/test_baidu_news_search.py -s

settings.json

{ "python-envs.defaultEnvManager": "ms-python.python:system", // 开启 pytest+unittest 双兼容 "python.testing.pytestEnabled": true, "python.testing.unittestEnabled": false, // 执行用例自动生成 html 报告 "python.testing.pytestArgs": [ "." ], // Windows 终端中文不乱码 "terminal.integrated.env.windows": { "PYTHONIOENCODING": "utf-8" }, // yaml 文件保存自动格式化 "[yaml]": { "editor.formatOnSave": true }, // Python 代码保存自动格式化、整理导入包 "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": "explicit" }, // 代码自动补全、类型检查 "python.analysis.autoImportCompletions": true, "python.analysis.typeCheckingMode": "basic" }

test_baidu_news_search.py

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys # 导入键盘按键工具 from selenium.webdriver.chrome.service import Service import time def test_baidu_news_search(): # 调用本地驱动 service = Service(executable_path=r"E:\py\chromedriver.exe") driver = webdriver.Chrome(service=service) driver.implicitly_wait(15) driver.maximize_window() # 打开百度新闻 driver.get("https://news.baidu.com") # 定位搜索框,输入关键词 search_input = driver.find_element(By.ID, "ww") search_input.send_keys("自动化测试") # 按回车键提交搜索(替代 submit,兼容所有网站的搜索框) search_input.send_keys(Keys.ENTER) # 等待页面跳转加载 time.sleep(2) # 断言验证搜索结果 assert "自动化测试" in driver.title, "搜索失败:页面标题不包含关键词" time.sleep(2) driver.quit()

---

以上就是这次入门学习的全部整理内容,后续会继续更新自动化测试学习过程中的笔记和踩坑记录,一起进步~

相关新闻

  • MLOps模型部署实战:环境隔离、服务化与可观测性三步落地
  • DS18B20 单总线协议深度解析:51单片机驱动时序误差控制在±1μs的3个关键点
  • Xilinx 10G PCS/PMA IP v6.0 配置详解:156.25MHz 时钟方案与 GT 收发器绑定

最新新闻

  • WarcraftHelper魔兽辅助工具:3分钟快速配置,让你的经典魔兽在现代电脑上完美运行
  • Rust开发5MB轻量级Markdown阅读器:多标签与实时编辑实践
  • Meta Watermelon模型追平GPT-5.5:AI大模型技术突破与开源影响分析
  • 变增益运放设计:从原理到实践,解决信号动态范围问题
  • LangChain 0.3.x 实战:5行代码构建RAG问答链,集成Qwen2-7B本地模型
  • Midjourney 垫图、参考图怎么用?让生成更贴近想要的效果

日新闻

  • OpenClaw本地化部署:xParse文档解析引擎实战指南
  • 蓝牙 5.4 协议栈深度解析:从 HCI 到 L2CAP 的 7 层数据流
  • PyTorch nn.CrossEntropyLoss 实战:3种权重设置与标签平滑对比(附代码)

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号