Java 实现Web自动化入门教程
1. 开篇概述
1.1 Java 做 Web 自动化的优势
为什么选择 Java 来做 Web 自动化?
- 生态成熟:Selenium 最早就是为 Java 开发的,资料最丰富,遇到问题容易找到解决方案
- 稳定性强:Java 是强类型语言,代码更健壮,适合长期维护的自动化测试项目
- 就业广泛:企业级自动化测试岗位 90% 以上要求 Java+Selenium 技术栈
- 扩展性好:可以轻松集成 TestNG、Jenkins、Allure 等企业级工具链
- 跨平台:一套代码可以在 Windows、Mac、Linux 上运行
1.2 适用场景
Web 自动化可以应用在以下场景:
|
场景 |
说明 |
|
功能测试 |
代替人工点击页面,验证网站功能是否正常 |
|
回归测试 |
版本更新后,自动运行所有用例,避免重复劳动 |
|
爬虫 |
对付反爬严格的网站,模拟真实浏览器行为采集数据 |
|
自动化运维 |
自动登录后台、批量操作、监控网站可用性 |
|
性能测试 |
结合其他工具进行前端性能监控 |
1.3 核心技术栈介绍
你需要掌握的核心技术:
|
技术 |
作用 |
|
Selenium |
Web 自动化的核心框架,模拟人的操作 |
|
WebDriver |
浏览器驱动,让代码能控制 Chrome、Firefox 等 |
|
Maven |
项目管理工具,自动下载和管理依赖包 |
|
TestNG |
测试框架,管理用例、生成报告、断言 |
|
WebDriverManager |
自动管理浏览器驱动,告别手动下载 |
2. 环境搭建全流程(Win10 系统专用)
2.1 JDK 17 安装与验证
第一步:下载 JDK 17
下载地址:https://www.oracle.com/java/technologies/downloads/#java17
选择 Windows → x64 Installer 下载
第二步:安装 JDK
- 双击下载的安装包(jdk-17_windows-x64_bin.exe)
- 点击 "下一步",记住安装路径(建议默认路径)
-
- 默认路径:
C:\\Program Files\\Java\\jdk\-17
- 默认路径:
- 等待安装完成,点击 "关闭"
第三步:配置环境变量(最重要!)
- 右键 "此电脑" → 属性 → 高级系统设置 → 环境变量
- 在 "系统变量" 中点击 "新建"
-
- 变量名:
JAVA\_HOME
- 变量名:
-
- 变量值:
C:\\Program Files\\Java\\jdk\-17(你的 JDK 安装路径)
- 变量值:
- 找到 Path 变量,点击 "编辑"
-
- 点击 "新建",添加:
%JAVA\_HOME%\\bin
- 点击 "新建",添加:
-
- 点击 "新建",添加:
%JAVA\_HOME%\\jre\\bin
- 点击 "新建",添加:
- 一路点击 "确定" 保存
第四步:验证安装
- 按 Win+R,输入 cmd,打开命令提示符
- 输入以下命令验证:
java -version
javac -version
✅ 成功标志:显示版本号,如 java version \&\#34;17\.0\.x\&\#34;
2.2 IDEA 社区版安装
第一步:下载 IDEA 社区版
下载地址:https://www.jetbrains.com/idea/download/#section=windows
选择 Community(社区版)下载,完全免费!
第二步:安装 IDEA
- 双击安装包
- 点击 "下一步",选择安装路径(建议默认)
- 安装选项勾选:
-
- ✅ Create Desktop Shortcut(创建桌面快捷方式)
-
- ✅ Update PATH variable(添加到环境变量)
-
- ✅ .java(关联.java 文件)
- 点击 "安装",等待完成
第三步:首次启动配置
- 打开 IDEA,选择 "不导入设置"
- 选择主题(推荐 Darcula 黑色主题)
- 点击 "Skip Remaining and Set Defaults"
2.3 Maven 项目创建步骤
第一步:新建项目
- 打开 IDEA → New Project
- 左侧选择 "Maven"
- 勾选 "Create from archetype"
- **选择 ****
org\.apache\.maven\.archetypes:maven\-archetype\-quickstart**
- 点击 "Next"
第二步:填写项目信息
- Name:你的项目名(如:WebAutoDemo)
- Location:项目存放位置
- GroupId:公司域名倒写(如:com.example)
- ArtifactId:项目名(如:WebAutoDemo)
- Version:默认即可
- 点击 "Next" → Finish
第三步:等待项目初始化
✅ 成功标志:看到项目结构,pom.xml 文件没有报错
2.4 Chrome 版本查看方法
- 打开 Chrome 浏览器
- 点击右上角三个点 → 帮助 → 关于 Google Chrome
- 查看版本号(如:124.0.6367.60)
- 记住大版本号(如:124)
2.5 ChromeDriver 手动配置方案(不推荐,了解即可)
第一步:下载对应版本 ChromeDriver
下载地址:https://chromedriver.chromium.org/downloads
选择和你的 Chrome 大版本一致的驱动下载,举个例子:
https://storage.googleapis.com/chrome-for-testing-public/128.0.6613.137/win64/chromedriver-win64.zip
第二步:存放位置
- 解压得到 chromedriver.exe
- 放到项目根目录下(和 pom.xml 同级)
- 代码中指定路径:
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
⚠️ 缺点:Chrome 自动更新后,驱动就失效了,需要重新下载
2.6 WebDriverManager 自动管理驱动(推荐方案 ✅)
这是目前最推荐的方案,自动下载匹配版本的驱动,一劳永逸!
只需要在 pom.xml 中引入依赖,代码中一行搞定,后面会详细讲。
3. 项目依赖配置
3.1 pom.xml 完整配置
打开 pom.xml,把下面的内容全部复制进去,覆盖原有内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>WebAutoDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Selenium 核心依赖 -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.20.0</version>
<!-- 排除冲突的Guava -->
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- WebDriverManager 自动管理驱动 -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.8.0</version>
</dependency>
<!-- TestNG 测试框架 -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.9.0</version>
<scope>test</scope>
</dependency>
<!-- 统一Guava版本,解决冲突 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.1.0-jre</version>
</dependency>
</dependencies>
</project>
3.2 刷新 Maven 依赖
- 点击 IDEA 右上角的 "Maven" 图标
- 点击刷新按钮(Reload All Maven Projects)
- 等待下载完成(第一次需要几分钟)
✅ 成功标志:pom.xml 没有红线,External Libraries 里能看到所有依赖
3.3 Guava 版本冲突的原因与解决方法
为什么会冲突?
Selenium 和 WebDriverManager 各自依赖了不同版本的 Guava,导致运行时报错:
java.lang.NoSuchMethodError: com.google.common.base...
彻底解决方法(上面的 pom.xml 已经配置好了)
- 在 selenium-java 中排除 Guava
- 单独引入统一版本的 Guava
就是上面 pom.xml 中做的事情,照抄即可!
4. 核心操作大全
4.1 8 种元素定位方法
前提:先创建浏览器驱动对象
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class LocatorDemo {
public static void main(String[] args) {
// 自动管理驱动(一行搞定!)
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
1️⃣ id 定位(最推荐,最快)
// 通过id定位百度搜索框
WebElement searchBox = driver.findElement(By.id("kw"));
2️⃣ name 定位
// 通过name属性定位
WebElement searchBox = driver.findElement(By.name("wd"));
3️⃣ className 定位
// 通过class属性定位
WebElement searchBox = driver.findElement(By.className("s_ipt"));
4️⃣ tagName 定位(不常用)
// 通过标签名定位(返回多个,一般不用)
WebElement input = driver.findElement(By.tagName("input"));
5️⃣ linkText 定位(精准匹配链接文字)
// 精准匹配链接文字
WebElement link = driver.findElement(By.linkText("新闻"));
6️⃣ partialLinkText 定位(模糊匹配链接文字)
// 模糊匹配链接文字
WebElement link = driver.findElement(By.partialLinkText("新"));
7️⃣ cssSelector 定位(推荐,速度快)
// css选择器定位
WebElement searchBox = driver.findElement(By.cssSelector("#kw"));
WebElement button = driver.findElement(By.cssSelector(".s_btn"));
8️⃣ xpath 定位(万能,最强大)
// xpath定位(万能!)
WebElement searchBox = driver.findElement(By.xpath("//*[@id='kw']"));
4.2 常用操作大全
// 1. 输入文字
searchBox.sendKeys("Java自动化");
// 2. 点击按钮
WebElement button = driver.findElement(By.id("su"));
button.click();
// 3. 清空输入框
searchBox.clear();
// 4. 获取元素文本
String text = button.getText();
System.out.println("按钮文字:" + text);
// 5. 获取元素属性
String placeholder = searchBox.getAttribute("placeholder");
System.out.println("提示文字:" + placeholder);
// 6. 按回车键
searchBox.sendKeys(Keys.ENTER);
// 7. 显式等待(推荐,必须掌握!)
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement element = wait.until(
ExpectedConditions.presenceOfElementLocated(By.id("kw"))
);
// 8. 判断元素是否显示
boolean isDisplayed = element.isDisplayed();
// 9. 判断元素是否启用
boolean isEnabled = element.isEnabled();
// 10. 判断是否选中(复选框、单选框)
boolean isSelected = checkbox.isSelected();
4.3 万能 XPath 写法速查
基础语法
|
表达式 |
说明 |
|
|
匹配所有元素 |
|
|
匹配所有 div 标签 |
|
|
匹配 id=kw 的元素 |
|
|
匹配 name=wd 的元素 |
|
|
匹配 class=s_ipt 的元素 |
模糊匹配
//*[contains(@id, 'kw')] // id包含kw
//*[starts-with(@class, 's_')] // class以s_开头
//*[text()='百度一下'] // 文本精确匹配
//*[contains(text(), '百度')] // 文本包含百度
轴定位(父子、兄弟关系)
//div[@id='head']/child::* // 所有子元素
//div[@id='head']/parent::* // 父元素
//*[@id='kw']/following-sibling::* // 后面的兄弟元素
//*[@id='kw']/preceding-sibling::* // 前面的兄弟元素
组合定位(多条件)
//input[@id='kw' and @name='wd'] // 并且
//input[@type='text' or @type='password'] // 或者
5. 完整实战案例:百度搜索自动化
5.1 完整可运行代码
在 src/main/java 下创建 BaiduSearch.java,复制以下代码:
package com.example;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.time.Duration;
/**
* 百度搜索自动化完整案例
* 零基础可以直接复制运行
*/
public class BaiduSearch {
public static void main(String[] args) {
// ==============================================
// 第1步:初始化驱动(WebDriverManager自动管理)
// ==============================================
System.out.println("=== 正在启动浏览器... ===");
WebDriverManager.chromedriver().setup(); // 自动下载匹配版本的ChromeDriver
WebDriver driver = new ChromeDriver(); // 创建Chrome浏览器对象
driver.manage().window().maximize(); // 窗口最大化
// ==============================================
// 第2步:打开百度首页
// ==============================================
System.out.println("=== 正在打开百度首页... ===");
driver.get("https://www.baidu.com");
// ==============================================
// 第3步:显式等待,确保搜索框加载完成
// ==============================================
System.out.println("=== 等待页面加载... ===");
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement searchBox = wait.until(
ExpectedConditions.presenceOfElementLocated(By.id("kw"))
);
// ==============================================
// 第4步:输入搜索关键词
// ==============================================
System.out.println("=== 输入搜索关键词... ===");
searchBox.sendKeys("Java Web自动化入门");
// ==============================================
// 第5步:按回车键搜索
// ==============================================
System.out.println("=== 执行搜索... ===");
searchBox.sendKeys(Keys.ENTER);
// ==============================================
// 第6步:等待搜索结果出现
// ==============================================
System.out.println("=== 等待搜索结果... ===");
wait.until(
ExpectedConditions.presenceOfElementLocated(By.id("content_left"))
);
// ==============================================
// 第7步:获取第一条搜索结果的标题
// ==============================================
WebElement firstResult = driver.findElement(By.cssSelector("#content_left h3"));
String title = firstResult.getText();
System.out.println("=== 第一条搜索结果:" + title + " ===");
// ==============================================
// 第8步:等待3秒后关闭浏览器
// ==============================================
System.out.println("=== 搜索完成!3秒后关闭浏览器... ===");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.quit(); // 关闭浏览器
System.out.println("=== 程序执行完成! ===");
}
}
5.2 代码逐行讲解
|
代码 |
说明 |
|
|
最关键! 自动下载和 Chrome 版本匹配的驱动,再也不用手动下载了 |
|
|
创建 Chrome 浏览器对象,此时会弹出一个 Chrome 窗口 |
|
|
窗口最大化,避免元素被遮挡 |
|
|
打开百度首页 |
|
|
创建等待对象,最多等 10 秒 |
|
|
显式等待,直到元素出现才继续,避免页面没加载完就操作 |
|
|
在搜索框中输入文字 |
|
|
按回车键 |
|
|
强制等待 3 秒,方便看效果 |
|
|
关闭浏览器 |
5.3 运行程序
- 右键 BaiduSearch.java → Run 'BaiduSearch.main ()'
- 观察控制台输出
- 会自动弹出 Chrome 浏览器,自动完成搜索
✅ 成功标志:
- 浏览器自动打开百度
- 自动输入关键词并搜索
- 控制台打印第一条搜索结果
- 3 秒后浏览器自动关闭
🎉 恭喜!你已经成功运行了第一个 Web 自动化程序!
6. 常见问题与排错指南
6.1 驱动版本不匹配
症状:
SessionNotCreatedException: This version of ChromeDriver only supports Chrome version XX
原因:Chrome 自动更新了,旧驱动不支持
解决方案:
✅ 使用 WebDriverManager! 就是我们代码中的 WebDriverManager\.chromedriver\(\)\.setup\(\),自动匹配版本,永远不会有这个问题!
6.2 元素找不到(NoSuchElementException)
症状:
NoSuchElementException: no such element: Unable to locate element
原因和解决方案:
|
原因 |
解决方法 |
|
页面还没加载完 |
必须用显式等待WebDriverWait,不要用 Thread.sleep |
|
定位写错了 |
F12 打开开发者工具,Ctrl+F 测试 xpath/css 是否正确 |
|
在 iframe 里面 |
先切换 iframe: |
|
元素被遮挡 |
先最大化窗口,或者滚动到可见区域 |
|
动态 id |
不要用 id,改用 xpath 的 contains 或其他属性 |
调试技巧:F12 → Elements → Ctrl+F → 输入你的 xpath,看能不能高亮元素
6.3 Guava 冲突报错(NoSuchMethodError)
症状:
NoSuchMethodError: com.google.common.base.Preconditions.checkArgument...
原因:Selenium 和其他依赖的 Guava 版本不一致
解决方案:照抄我们 pom.xml 中的配置!
- selenium-java 中排除 guava
- 单独引入统一版本的 guava
6.4 路径错误、文件找不到
症状:文件找不到异常
解决方案:
- chromedriver.exe 放在项目根目录(和 pom.xml 同级)
- 推荐直接用 WebDriverManager,不用管路径
- 绝对路径写法:
\&\#34;C:\\\\driver\\\\chromedriver\.exe\&\#34;(注意双反斜杠)
7. 进阶学习路线
恭喜你入门了!接下来可以按这个路线进阶:
第一阶段:基础巩固
- ✅ 元素等待机制深入:学习隐式等待、显式等待、FluentWait 的区别和使用场景
- ✅ 三大切换:iframe 切换、窗口切换、alert 弹窗处理
- ✅ 特殊元素操作:下拉框、日期选择器、文件上传、鼠标悬停
第二阶段:框架搭建
- 📚 页面对象模式(POM):企业级自动化项目的标准架构,代码复用性强
- 📚 TestNG 测试框架:注解、断言、用例管理、失败重跑、分组执行
- 📚 数据驱动:从 Excel/CSV 读取测试数据,参数化测试
第三阶段:报告与运维
- 📊 截图与日志:失败自动截图、log4j 日志记录
- 📊 Allure 测试报告:生成漂亮的可视化测试报告
- 📊 ExtentReports:另一个优秀的报告框架
第四阶段:企业级集成
- 🔄 分布式测试:Selenium Grid,多浏览器并行执行
- 🔄 CI/CD 集成:Jenkins 定时执行,邮件通知
- 🔄 Docker 容器化:容器中运行自动化测试
🎓 写在最后
Web 自动化的学习路径:
- 先跑通第一个案例(你已经做到了!)
- 多写多练:找几个网站自己写脚本练习
- 遇到问题先搜索:99% 的问题都有人遇到过
- 打好基础:元素定位和等待是核心
记住:自动化不是万能的,但学会了能帮你节省 90% 的重复劳动!
更多推荐


所有评论(0)