Web 自动化测试入门:从概念到百度搜索实战
介绍 Web 自动化测试的核心概念、分类及测试金字塔模型,重点阐述 WebDriver 驱动机制与 Selenium 工具的使用。通过 Java 语言结合 Maven 依赖管理,演示了基于百度搜索场景的自动化脚本编写流程,包括浏览器配置、元素定位策略及底层通信原理,旨在帮助读者理解自动化测试在回归测试中的应用价值与实施要点。

介绍 Web 自动化测试的核心概念、分类及测试金字塔模型,重点阐述 WebDriver 驱动机制与 Selenium 工具的使用。通过 Java 语言结合 Maven 依赖管理,演示了基于百度搜索场景的自动化脚本编写流程,包括浏览器配置、元素定位策略及底层通信原理,旨在帮助读者理解自动化测试在回归测试中的应用价值与实施要点。


自动化是统称,包含多种类型,核心分类及说明如下:
| 分类 | 说明 |
|---|---|
| 接口自动化 | 针对软件接口的测试,目的是验证接口的功能、性能、稳定性等。 |
| UI 自动化 | 针对软件界面的测试,包含: |
| 1. 移动端自动化 | 通过模拟器在电脑上编写脚本,测试手机应用;稳定性较差(受设备、系统版本等环境因素影响)。 |
| 2. Web 自动化 | 模拟浏览器操作(如自动打开百度、执行搜索),替代人工完成网页操作与验证。 |
以'百度搜索'为例,Web 自动化的执行逻辑是:自动打开浏览器→访问百度首页→在搜索框输入内容→执行搜索→验证结果,以此替代人工的重复操作,提升测试效率。



自动化测试与手动测试并非互斥,而是互补:
计算机有了驱动程序就可以与设备(耳机,摄像头,麦克风,键盘,显示器等等设备)进行通信。


WebDriverManager 解决了'手动下载、匹配驱动版本'的繁琐问题,降低了 Web 自动化测试的环境搭建成本,提升了自动化脚本的可维护性。
Selenium 是主流的 Web 自动化测试工具,提供丰富的 API(方法),用于模拟人工在浏览器中的操作(如打开页面、输入内容、点击按钮等),是编写 Web 自动化脚本的核心工具。
需在项目中引入 Selenium 的 Java 库依赖:

代码实现'打开 Chrome 浏览器→访问百度→搜索关键词→点击搜索→关闭浏览器'的流程,核心步骤:

它的作用是'给浏览器设置启动参数/规则',就像你打开浏览器前先设置:
'要不要无痕模式?要不要允许跨域?要不要最大化窗口?'

如果没有这个配置对象:浏览器会以'默认裸状态'启动,可能触发跨域报错、窗口太小导致元素找不到、弹窗拦截操作等问题,自动化容易失败。

这里的逻辑是:
ChromeDriver是驱动的具体实现(对应 Chrome);options后,驱动启动浏览器时会'带着配置规则'打开浏览器;driver本质是'驱动的实例',不是'浏览器实例'——你操作driver,就是驱动帮你控制浏览器。把整个流程比作'你指挥司机开汽车':
driver.get() = 你通过渠道告诉司机'去百度这个地址'。| 维度 | 简写 XPath(相对 XPath) | Full XPath(绝对 XPath) |
|---|---|---|
| 定位逻辑 | 从整个页面找'id=chat-textarea'的任意元素 | 从 HTML 根节点(/html)开始,按'层级路径'找元素 |
| 稳定性 | 高(只要 id 不变,页面结构变了也能找到) | 极低(页面任意层级改了,路径就失效) |
| 长度/可读性 | 短、易读、易维护 | 超长、难读、难维护 |
| 依赖页面结构 | 不依赖(通过属性定位,和层级无关) | 完全依赖(层级错 1 个就定位失败) |
| 实际使用场景 | 工作中首选(99% 的场景用这个) | 仅临时调试/无属性可定位的极端场景 |
三者通过HTTP 通信实现自动化,流程为:
ChromeDriverService,创建本地服务(IP: localhost,端口由服务分配);sessionid(后续操作需携带此 ID 标识会话);
| 特征 | 是脚本 | 不是脚本 |
|---|---|---|
| 核心目的 | 完成具体的、落地的任务(比如搜百度、批量改文件、自动发消息) | 学习/验证语法、造工具/结构(比如练打印、写链表、算算法) |
| 执行方式 | 「一键运行」就能自动干完所有事,不用手动干预 | 要么只输出一个结果,要么只是定义'工具'(比如定义个类/链表),没实际干活 |
| 举例子 | '开百度→输文字→关浏览器'代码 | 单行System.out.println("hello")、写个二叉树类、写冒泡排序 |
| 代码内容 | 算不算脚本? | 核心判断 |
|---|---|---|
| 写个 for 循环,打印 1 到 100 | 算「极简脚本」 | 完成了'输出 1-100'的具体小任务 |
| 写个计算器函数(加/减),但只定义不调用 | 不算 | 只造工具,没实际算任何数 |
| 写计算器函数 + 输入 2 个数 + 调用加法 + 打印结果 | 算脚本 | 完成了'计算 2 数之和'的具体任务 |
跑代码后,如果它能「自动完成一件你需要的具体事儿」,就是脚本;如果只是'练语法/造工具/出个无意义结果',就不是。
Selenium 通过'脚本→驱动→浏览器'的分层通信,实现了代码对浏览器的无人工干预控制,是 Web 自动化测试的核心执行工具。
验证方式:执行 Selenium 编写的自动化脚本代码时,可以在终端看到创建的驱动服务地址。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online