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

Web 自动化测试入门:从概念到百度搜索实战

Web 自动化测试的基础概念与实战流程。从自动化测试的定义、分类及金字塔模型入手,深入剖析 WebDriver 与 Selenium 的工作原理。通过 Maven 依赖配置、ChromeOptions 设置及 Java 代码示例,完整演示了百度搜索自动化脚本的实现细节。文章强调脚本应聚焦于解决实际任务而非单纯练手,旨在帮助开发者构建高效稳定的自动化测试体系。

2177283801发布于 2026/3/26更新于 2026/9/853 浏览
Web 自动化测试入门:从概念到百度搜索实战
一、自动化的核心概念

简单来说,自动化就是用机器替代人工完成重复任务。生活中随处可见,比如自动洒水机、超市闸机,核心目的都是减少人力消耗、提升效率和质量。

在软件领域,自动化测试的核心价值在于回归测试。当软件迭代新版本时,我们需要验证新增功能是否影响了历史功能的正常运行。这时候,自动化脚本就能派上用场。

这里有个常见的误区需要澄清:

  • 自动化不能完全取代人工:脚本需要人编写,功能变更后还得维护更新,可靠性未必优于资深测试人员。
  • 不能指望'大幅度降低工作量':它只能'一定程度'减少重复劳动,别把期望值拉得太高。

文章配图

二、自动化测试的分类

自动化是个统称,主要分两大类:接口自动化和 UI 自动化。

分类说明
接口自动化针对软件接口的测试,验证功能、性能、稳定性等。
UI 自动化针对软件界面的测试,包含移动端和 Web 端。

其中,Web 自动化是我们今天的主角。它的逻辑很直观:模拟浏览器操作(如打开百度、输入搜索词、点击按钮),替代人工完成网页操作与验证。

以'百度搜索'为例,执行流程是:自动打开浏览器 → 访问首页 → 输入内容 → 执行搜索 → 验证结果。这一套下来,比人工点鼠标快得多。

文章配图

三、自动化测试金字塔

怎么分配测试资源?业界有个经典的模型叫'自动化测试金字塔'。

文章配图

1. 理想的金字塔结构 从下到上依次是:单元测试 → API/集成测试 → UI 自动化 → 手动/探索性测试。 核心逻辑是:投入产出比从下到上递减。底层的单元测试耗时少、发现 bug 多,ROI(投资回报率)最高;越往上层,UI 自动化和手动测试需要的资源越多,回报相对越低。

2. 现实中的'冰淇淋蛋筒模式' 很多企业的实际情况恰恰相反。因为底层自动化(单元、接口)搭建门槛高、见效慢,企业往往优先把资源投给'看得见效果'的 UI 自动化和手动测试。虽然短期能出活,但长期维护成本极高。

结论:自动化和手动不是互斥的。底层自动化保基础质量,上层测试覆盖复杂场景。理想状态是底部宽、顶部窄。

文章配图

四、Web 自动化测试基础
1. 驱动的核心作用

程序要操作浏览器,得有个'桥梁',这就是WebDriver。它类似于电脑的驱动程序,负责建立代码与浏览器的通信。

手动测试是你直接操作浏览器,而自动化测试中,你的代码通过 WebDriver 指挥浏览器去执行预设流程。没有驱动,代码就无法控制浏览器。

文章配图

2. 驱动管理工具:WebDriverManager

手动下载、匹配驱动版本(ChromeDriver、GeckoDriver 等)非常繁琐。WebDriverManager 这个开源库能帮你搞定这些:自动下载、配置版本,还能识别本地浏览器版本并匹配对应驱动。

引入依赖后,环境搭建成本大幅降低。Maven 依赖示例如下:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.6.2</version>
</dependency>
五、Selenium 实战指南

Selenium 是目前主流的 Web 自动化测试工具,提供了丰富的 API 来模拟人工操作。下面我们以 Java 为例,拆解一个完整的'百度搜索'脚本。

1. 环境准备

除了 Selenium 核心库,我们还需要引入 WebDriverManager 来处理驱动问题。

<dependencies>
    <!-- Selenium Java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.15.0</version>
    </dependency>
    <!-- 驱动管理 -->
    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>5.6.2</version>
    </dependency>
</dependencies>
2. 脚本逻辑实现

核心目标是:打开 Chrome → 访问百度 → 搜索关键词 → 关闭浏览器。

第一步:创建浏览器配置对象 这一步很关键,相当于给浏览器设置启动参数。如果不配置,浏览器可能以默认裸状态启动,容易触发跨域报错、窗口太小找不到元素等问题。

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized"); // 最大化窗口
options.addArguments("--disable-gpu");     // 禁用 GPU 加速
// 其他配置... 

第二步:实例化驱动对象 这里用 WebDriverManager 自动管理驱动,然后关联刚才的配置对象。

WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver(options);

注意: driver本质是驱动的实例,不是浏览器本身。你调用 driver.get(),实际上是告诉驱动去执行打开浏览器的指令。

第三步:定位与操作 定位元素时,推荐使用相对 XPath,稳定性更高。绝对路径一旦页面结构微调就会失效。

// 打开百度
String url = "https://www.baidu.com";
driver.get(url);

// 找到搜索框并输入
WebElement searchBox = driver.findElement(By.name("wd"));
searchBox.sendKeys("Selenium 自动化测试");

// 点击搜索按钮
WebElement searchBtn = driver.findElement(By.id("su"));
searchBtn.click();

// 简单等待验证(实际项目中建议用显式等待)
Thread.sleep(3000);

// 关闭浏览器
driver.quit();
3. 工作原理简述

三者通过 HTTP 通信实现自动化:

  1. 启动服务:脚本启动 ChromeDriverService,监听本地端口。
  2. 连接驱动:脚本向驱动发送 HTTP 请求。
  3. 驱动解析:驱动生成 session ID,打开浏览器。
  4. 执行操作:所有操作(访问、定位)都通过服务转发给浏览器。
  5. 返回结果:浏览器执行后将结果反馈回脚本。

文章配图

六、脚本的核心是「做事儿」

写代码是为了什么?很多人容易陷入'造轮子'的误区。判断一段代码是不是合格的自动化脚本,看两点:

特征是脚本不是脚本
核心目的完成具体的落地任务(搜百度、批量改文件)学习语法、练手、定义数据结构
执行方式一键运行自动干完,无需干预只输出结果或仅定义工具

比如,单行 System.out.println("hello") 不算脚本,因为它没解决实际问题;写个链表类也不算,除非你用这个链表存了数据并输出了结果。跑代码后,如果它能自动完成一件你需要的具体事儿,就是脚本。

验证方式很简单:执行 Selenium 编写的脚本,终端会显示创建的驱动服务地址,证明通信链路已打通。

目录

  1. 一、自动化的核心概念
  2. 二、自动化测试的分类
  3. 三、自动化测试金字塔
  4. 四、Web 自动化测试基础
  5. 1. 驱动的核心作用
  6. 2. 驱动管理工具:WebDriverManager
  7. 五、Selenium 实战指南
  8. 1. 环境准备
  9. 2. 脚本逻辑实现
  10. 3. 工作原理简述
  11. 六、脚本的核心是「做事儿」

更多推荐文章

查看全部
  • Paperzz 降重与 AIGC 检测功能解析:适配知网维普的合规方案
  • OpenClaw 龙虾 AI 全能助手安装与配置指南
  • C++ 二叉搜索树(BST)详解与实现
  • Sambert-Hifigan 部署教程:WebUI 与 API 双模式
  • 2026 春晚国产人形机器人技术突破与核心架构解析
  • Unity-MCP 配置指南:实现 AI 驱动游戏开发
  • 无人机视角山区泥石流和滑坡图像识别数据集
  • 自然语言处理在客户服务领域的应用与实战
  • Obsidian 接入 AI 配置指南
  • OpenClaw 集成本地 Llama.cpp 后端
  • StableDiffusion-webui 本地部署与使用指南
  • Java 脚手架项目集成阿里云短信服务
  • MS-SWIFT 多模态实战:云端 GPU 快速部署 AI 绘画
  • LLM 模型入门与主流开源资源盘点
  • Apache HertzBeat 部署安装指南
  • OmniSteward:基于 LLM Agent 的智能家居与电脑控制方案
  • 主流无人机倾斜摄影三维建模服务商盘点
  • Claude Code 本地环境配置与 API 调用教程
  • AI 写作工具深度测评:逻辑、拟人度与成本对比
  • 使用 cpolar 内网穿透实现 OpenClaw 远程访问

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

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

  • Base64 文件转换器

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