跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

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

Web 自动化测试通过脚本模拟人工操作,主要用于回归测试以提升效率。文章阐述了自动化金字塔模型,对比了理想投入与实际现状,指出底层自动化更具性价比。技术层面介绍了 WebDriver 作为通信桥梁的作用及 WebDriverManager 的便捷性,并通过 Maven 依赖配置与 Selenium 代码示例,演示了基于百度搜索的 Web 自动化实战流程。重点强调了元素定位策略的选择原则以及脚本应聚焦于解决具体业务问题的核心价值,而非单纯的语法练习。

奇形怪状发布于 2026/3/23更新于 2026/7/731 浏览
Web 自动化测试入门:从概念到百度搜索实战

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

自动化的核心逻辑

自动化测试的本质,是用程序替代人工重复操作。生活中常见的自动洒水机、超市闸机都是这个逻辑——减少人力消耗,提升效率和质量。

在软件领域,它的核心目的很明确:回归测试。当新版本上线时,我们需要验证新增功能有没有把旧功能搞挂。这里有个面试常考点:自动化不能完全取代人工。脚本需要人写,功能变更后还得维护,可靠性未必比人高;它也不能'大幅度降低工作量',只能'一定程度'减少重复劳动,表述要严谨。

分类与金字塔模型

自动化是个统称,主要分接口和 UI 两类。UI 自动化里又分移动端和 Web 端。以 Web 为例,就是模拟浏览器打开百度、输入搜索、点击验证,替代人工流程。

关于测试投入,业界有个经典的自动化测试金字塔理论:

  • 理想模型:底层是单元测试,中间是 API/集成测试,顶层是 UI 自动化。越往下,投入产出比越高,发现问题越早;越往上,资源消耗越大,回报越低。
  • 现实模式:很多企业其实是倒过来的'冰淇淋蛋筒模式'。因为底层自动化搭建难、周期长,企业往往优先做'看得见效果'的 UI 层,但长期来看,底层自动化的成本收益更优。

结论很简单:底层自动化(单元、接口)负责长期降本保质量,上层测试(UI、手动)负责覆盖复杂场景和探索性验证,两者互补。

驱动与管理工具

要让代码控制浏览器,得靠WebDriver。它就像汽车的发动机或电脑的驱动程序,是程序与浏览器通信的桥梁。没有它,代码没法指挥浏览器干活。

手动下载匹配驱动版本很麻烦,这时候可以用 WebDriverManager。这是个开源 Java 库,能自动管理 Selenium 所需的驱动(如 ChromeDriver),识别本地浏览器版本并自动下载对应驱动。引入依赖后,环境搭建成本大幅降低,脚本可维护性也提升了。

<!-- Maven 依赖示例 -->
<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.6.2</version>
</dependency>

Selenium 实战:百度搜索脚本

Selenium 是主流 Web 自动化工具,提供丰富的 API 模拟人工操作。下面我们以'百度搜索'为例,看看怎么落地。

1. 环境准备

项目里需要引入 Selenium 的 Java 库依赖:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.15.0</version>
</dependency>

2. 配置浏览器选项

启动浏览器前,最好先设置参数。比如要不要无痕模式?要不要最大化窗口?这通过 ChromeOptions 对象完成。

如果不配置,浏览器会以默认裸状态启动,容易触发跨域报错、元素找不到或弹窗拦截等问题。配置好规则再启动,稳定性会高很多。

3. 编写脚本逻辑

核心流程是:创建驱动实例 → 访问页面 → 定位元素 → 执行操作 → 关闭浏览器。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class BaiduSearch {
    public static void main(String[] args) {
        // 1. 配置浏览器选项(如最大化、无头模式等)
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--start-maximized");
        
        // 2. 初始化驱动(结合 WebDriverManager 可自动管理驱动版本)
        WebDriver driver = new ChromeDriver(options);
        
        try {
            // 3. 访问百度首页
            driver.get("https://www.baidu.com");
            
            // 4. 定位搜索框并输入关键词
            WebElement searchBox = driver.findElement(By.id("kw"));
            searchBox.sendKeys("Selenium 自动化测试");
            
            // 5. 点击搜索按钮
            driver.findElement(By.id("su")).click();
            
            // 6. 简单断言验证(例如检查标题是否包含关键词)
            String title = driver.getTitle();
            System.out.println("当前页面标题:" + title);
            
        } finally {
            // 7. 确保浏览器关闭
            driver.quit();
        }
    }
}

4. 元素定位策略

定位元素时,推荐用相对 XPath 而不是绝对路径。相对 XPath 只要 ID 不变,页面结构微调也能找到;绝对 XPath 一旦层级变动就失效。实际工作中 99% 的场景首选相对定位。

维度相对 XPath绝对 XPath
定位逻辑按属性查找任意匹配元素从根节点按层级路径查找
稳定性高低
维护成本低高

5. 工作原理简述

三者通过 HTTP 通信协作:Selenium 脚本启动本地服务,向 WebDriver 发送请求,驱动解析后控制浏览器执行,结果再回传给脚本。整个过程无需人工干预。

脚本的核心价值

最后想强调一点:脚本的核心是'做事',不是'练手'。

  • 算脚本:一键运行就能自动完成具体任务(如搜百度、批量改文件)。
  • 不算脚本:只输出一个结果(如打印 hello)、或者只定义工具类但没实际调用。

如果你写的代码只是验证语法,或者造了个链表却不去存数据,那它只是个练习品。真正的自动化脚本,跑完应该能解决一个具体的业务问题。Selenium 的价值就在于通过分层通信,让代码真正接管浏览器的无人值守操作。

验证方式也很直接:执行脚本时,终端能看到创建的驱动服务地址,说明通信链路已打通。

目录

  1. Web 自动化测试入门:从概念到百度搜索实战
  2. 自动化的核心逻辑
  3. 分类与金字塔模型
  4. 驱动与管理工具
  5. Selenium 实战:百度搜索脚本
  6. 1. 环境准备
  7. 2. 配置浏览器选项
  8. 3. 编写脚本逻辑
  9. 4. 元素定位策略
  10. 5. 工作原理简述
  11. 脚本的核心价值
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 网络安全基础与进阶核心书籍推荐指南
  • SpringBoot 源码解析:AnnotationConfigServletWebServerApplicationContext 构造流程
  • 直流无刷电机 FOC 控制算法详解
  • OpenClaw Session 机制详解:重置、压缩、剪枝与记忆管理
  • AIGC 技术发展与应用实践指南
  • 智能家居接入 Google Home 与 Assistant 集成指南
  • C++ 继承:面向对象代码复用的核心机制
  • C++ STL 有序关联容器详解:set、map 及其变体用法
  • 基于 Python 与 TensorFlow 的蔬菜图像识别系统设计与实现
  • Spring AI 引入 Agent Skills:模块化智能体能力新范式
  • Java Web 开发:JSON 基础、@Test 测试与 Cookie/Session/请求处理
  • TWIST2 全身 VR 遥操控制系统:基于视觉观测预测人形机器人关节位置
  • AI 模型文件解析:v1-5-pruned-emaonly-fp16.safetensors 详解
  • AI 大模型提示词工程核心技术与实践
  • AI 绘画精讲与 AIGC 时代游戏美术设计:Stable Diffusion 实战指南
  • 基于 FPGA 的新型直流耗能装置实时仿真模型研究
  • Python 基础知识点图解:解释器、数据结构与流程控制
  • OpenClaw 安全 AI 助理搭建指南:阿里云 Docker 本地部署方案
  • 在线图书借阅平台设计与实现:AI 辅助开发实战
  • 医疗自然语言处理(NLP)应用场景与实战开发

相关免费在线工具

  • 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