基于 Python+Selenium+Pytest 的豆瓣电影 Web UI 自动化测试实战
基于 Python+Selenium+Pytest 的豆瓣电影 Web UI 自动化测试实战
豆瓣电影官网的 Web UI 自动化测试项目以真实线上 Web 系统为实践对象,技术栈为 Python、Selenium,结合 Pytest 实现用例管理与报告生成。下面从项目背景、技术选型、核心实现、成果与优化四个维度,分享本次自动化测试实战经验。
一、项目背景
豆瓣电影是国内主流的影视信息服务平台,页面交互丰富、动态元素多、场景覆盖广,是学习 Web UI 自动化测试的优质实践项目。本次项目针对其首页加载、关键词搜索、页面交互、导航跳转、登录验证、内容浏览等核心功能,搭建自动化测试体系,目标解决手动回归测试效率低、重复执行成本高、易遗漏异常场景等痛点,同时掌握真实线上项目的元素定位、等待策略与断言设计,保障核心业务流程稳定可用。
被测系统:豆瓣电影官网(https://movie.douban.com/)
测试范围:Web UI 自动化测试(8 条核心用例)
测试账号:1325769xxxx / Lsw110xx2
二、技术栈
本次自动化测试项目采用 Python 主导的轻量化技术栈,兼顾学习成本与实用性,适合在校生入门 Web 自动化测试,核心组件如下:
Selenium:Web UI 自动化核心库,驱动 Edge 浏览器模拟用户真实操作(输入、点击、滚动、窗口切换等),适配动态元素定位,深入理解前端页面渲染与交互逻辑。
Pytest:测试框架,用于用例组织、执行、断言管理,支持 setup/teardown 前置后置生命周期,规范测试代码结构,培养工程化用例设计思维。
Allure-pytest:可视化测试报告工具,生成结构清晰的 HTML 报告,展示用例执行结果、失败原因、执行耗时等信息,便于快速复盘与问题定位,直观呈现项目成果。
显式等待(WebDriverWait):替代固定 sleep,动态等待元素加载完成,提升用例稳定性,掌握自动化测试中的等待策略设计。
源码地址:https://gitee.com/ls109/douban_test.git
三、核心自动化测试实现
项目整体结构清晰,分为公共工具模块、Web UI 测试模块、配置文件、执行入口,代码模块化、易理解,适合在校生学习参考。下面重点拆解核心用例实现逻辑。
(一)Web UI 自动化测试(test_web.py)
核心覆盖首页验证、正常 / 异常搜索、清空重搜、页面滚动、登录校验、内容跳转、导航跨站等场景,通过 Selenium 模拟用户真实操作,贴近实际 Web 测试工作流程,关键实现如下:
- 浏览器驱动封装(web_driver.py)
统一初始化 Edge 浏览器,设置窗口最大化、隐式等待 10 秒,避免每个用例重复配置驱动,提升代码复用性,理解封装思想。
from selenium import webdriver
def get_driver():
driver = webdriver.Edge()
driver.maximize_window()
driver.implicitly_wait(10)
return driver
- 用例前置后置封装
统一管理浏览器初始化与销毁,减少资源重复创建,提升用例执行效率,掌握 Pytest 生命周期管理。
def setup_class(self):
self.driver = get_driver()
self.wait = WebDriverWait(self.driver, 15)
def teardown_class(self):
self.driver.quit()
- 核心用例示例
UI-001 首页加载验证:访问豆瓣电影首页,断言页面标题包含 “豆瓣电影”,验证基础页面可用性,掌握基础页面加载校验逻辑。
UI-002 正常关键词搜索:输入 “流浪地球” 并提交搜索,断言页面包含关键词相关内容,验证正常搜索业务流程,掌握输入与结果校验设计。
UI-003 异常搜索(特殊字符):输入连续特殊字符并提交搜索,断言页面显示指定错误提示文案,验证异常场景容错能力,掌握异常用例设计思路。
UI-005 页面滚动与加载更多:通过 JS 滚动至目标按钮、点击加载更多、对比前后数据数量,验证动态加载功能有效性,掌握 JS 执行与动态数据校验方法。
UI-006 登录功能验证:输入指定账号密码,完成手动验证码校验后登录,断言页面显示用户名,验证登录流程正确性,掌握表单提交与登录态校验逻辑。
UI-008 导航栏跨站跳转:点击读书、音乐导航入口,切换新窗口后校验目标 URL,验证跨站跳转功能可用性,掌握窗口切换与 URL 断言方法。
(二)用例执行与报告生成
通过 run.py 统一执行所有用例,集成 Pytest 与 Allure,一键执行全部 UI 用例并生成可视化报告,便于快速查看用例通过率、失败用例详情,直观展示学习成果,培养工程化执行与复盘能力。
# run.py
import os
import pytest
pytest.main(["-s", "-v"])
os.system("allure generate -o report -c temps")
四、项目成果与优化方向
(一)项目成果
独立完成 8 条核心 Web UI 自动化用例,覆盖首页、搜索、交互、登录、导航等核心流程,完整实践 Web 自动化测试从需求分析、用例设计、代码实现到报告生成的全流程,夯实专业基础。
实现代码模块化封装、用例稳定可复用、报告可视化可追溯,掌握 Selenium 元素定位、显式等待、JS 执行、窗口切换、Pytest 用例设计等核心技能,提升代码编写、问题调试和工程实践能力。
(二)优化方向
验证码自动化识别:当前登录采用图行动态缺口验证码,需手动完成滑块验证;后续计划集成滑块轨迹模拟算法或对接轻量第三方验证接口,实现动态缺口验证码的自动化识别与滑动,消除人工干预环节,提升用例全自动执行能力,增强项目在复杂验证码场景下的适配性。
数据驱动测试:引入 CSV/Excel 管理搜索关键词、账号密码等测试数据,实现用例与数据分离,适配多组数据批量执行场景,学习数据驱动设计模式。
异常场景补充:新增网络中断、元素加载超时、非法参数输入等异常用例,提升自动化测试覆盖率,完善全面的测试思维体系。
元素定位优化:统一封装页面元素定位器,减少硬编码,提升用例可维护性,适配页面元素变更场景。
五、总结
作为大三在校生,本次基于 Python 的 Web UI 自动化测试实战,从真实线上业务场景出发,搭建了一套轻量化、易维护、稳定可用的自动化测试框架,系统掌握了 Selenium 动态元素定位、显式等待策略、Pytest 用例生命周期管理、Allure 报告集成等核心技能。
更多推荐



所有评论(0)