Sparkle CodesSparkle
项目 / web测试

Web 自动化测试

x
xpx
Jun 12, 2024
Editorial Insight
#Automation#WebUI

Web 自动化测试预习:起步与环境构建

这份笔记整理自「Web 自动化预习」课程资料,旨在建立对自动化测试的初步认知,并完成基础开发环境的搭建。

核心目标
  1. 理解自动化测试的本质与适用场景。
  2. 构建基于 Python + Selenium 4 的 Web 自动化开发环境。
  3. 熟悉实战项目「读书屋」的业务背景与底层数据对接。

知识索引

1. 理论与选型:什么时候该用代码说话?

自动化不是对手工测试的简单替代,而是其能力的延伸。了解什么是自动化,以及哪些项目特征决定了它是否值得投入。

  • 详见: 自动化测试:从手工到代码的跨越

2. 环境搭建:Selenium 4 与驱动管理

环境是自动化的第一步。涵盖 Python、PyCharm 的关联,以及浏览器驱动(Chromedriver)的配置逻辑。

  • 详见: 稳定压倒一切:Selenium 4 与 Python 环境搭建

3. 实战背景:读书屋项目全景

熟悉被测系统(SUT)是编写用例的前提。包括前后台地址、数据库连接信息以及第三方支付沙箱的配置。

  • 详见: 实战演练:读书屋项目背景与数据对接

4. 元素定位:Web 自动化之眼

精准定位是自动化的命门。除了 8 大基础定位,本节还深入探讨了 CSS/XPath 高级技巧及 Selenium 4 相对定位。

  • 详见: Web自动化-元素定位方法全集

5. 等待机制:同步执行与页面状态

解决「代码跑太快,页面没跟上」的同步难题。对比三种等待方式,并提供最佳实践建议。

  • 详见: Web自动化-等待机制详解

6. 控件交互:处理复杂 UI 场景

实战演练如何操作下拉框、单选/复选框以及应对 Iframe 窗口嵌套。

  • 详见: Web自动化-常见控件交互与窗口切换

7. 弹窗与窗口:跨越浏览上下文

处理原生 JS 弹窗(Alert/Confirm/Prompt)以及在多标签页、多窗口间灵活穿梭。

  • 详见: Web自动化-弹窗与多窗口管理

8. 深度模拟:复杂交互与滚动

利用 ActionChains 模拟悬停、拖拽、键盘组合键,并掌握 Selenium 4 最新的页面滚动技术。

  • 详见: Web自动化-鼠标键盘模拟与滚动机制

9. 特殊元素处理:文件上传与日期控件

攻克「非 input 标签上传」和「只读日期控件」两大难题,掌握 PyAutoGUI 和 JS 属性修改黑科技。

  • 详见: Web自动化-文件上传与日期控件处理

10. 验证码难题:绕过与识别方案

系统总结 6 种验证码处理方案,包括 Cookie 绕过、复用浏览器以及基于 OpenCV + Tesseract 的 OCR 图像识别。

  • 详见: Web自动化-验证码绕过与图像识别方案

11. 框架决胜:Unittest 与 Pytest 对标

对比 Python 两大核心测试框架。从 Unittest 的四要素到 Pytest 的自动发现机制,选择最适合项目的骨架。

  • 详见: Web自动化-测试框架对比:Unittest vs Pytest

12. Pytest 进阶:从入门到数据驱动

深入研究 @pytest.mark.parametrize 实现 DDT,利用 conftest.py 共享 Fixture 上下文,并初步集成 Allure 报告。

  • 详见: Web自动化-Pytest:从入门到数据驱动实战

13. 架构精要:构建自动化证据链

利用 Pytest Hook 钩子函数实现失败自动截图、日志注入及 Allure 动态 Bug 关联,解决 CI 环境下的排错难题。

  • 详见: Pytest 进阶-利用 Hooks 与 Allure 自动化构建故障证据链

阶段五:工程化与数据驱动 (Day 13 - 14)

13. 解耦思维:POM 架构设计 (Day 13)

理解 POM 分层思维,将页面定位与业务逻辑彻底分离。

  • 详见: Day13/Web自动化架构:POM分层设计自顶向下解析

14. 驱动实战:Excel / YAML / SQL (Day 14)

掌握工程级 DDT 方案,实现用例与数据的完美闭环。

  • 详见: Day14/Web自动化实战:从 Excel 与 YAML 驱动到全套 POM 实现

阶段六:面试与复盘

  • 原理题: WebDriver 协议 (W3C) 的三层结构是什么?
  • 架构题: POM 模式下,BasePage 的主要职责是什么?
  • 实战题: 如何在不修改代码的情况下,给所有失败用例加截图?
  • 设计题: 如何在 YAML 用例中动态注入环境依赖参数?

学习方法建议

预习先行,边听边练。遇到环境问题先看日志,反复尝试后再对照文档,保持环境纯净(虚拟环境是基础)。

BACK TO BLOG
The End of Interaction