Java+Selenium自动化测试环境配置全攻略:从零搭建到实战避坑
1. 项目概述:为什么Java+Selenium依然是自动化测试的基石
如果你正在搜索“Java-selenium环境配置”,大概率是刚踏入自动化测试领域,或者准备接手一个基于Java的Web自动化项目。我干了十多年测试开发,带过不少新人,发现很多朋友在第一步“配环境”上就卡住了半天,网上教程五花八门,版本对不上、依赖冲突、驱动问题层出不穷,最后环境没搭好,学习的热情先被浇灭了一半。今天,我就以一个老测试的身份,带你从头到尾、无坑地走一遍Java + Selenium的环境配置。这不是一个简单的安装列表,我会把每一步背后的“为什么”讲清楚,比如为什么要用Maven而不是手动下JAR包,为什么ChromeDriver的版本必须和浏览器严格对应,以及那些教程里不会写的、只有踩过坑才知道的细节。
简单说,这个环境能让你用Java代码模拟真人操作浏览器,进行点击、输入、跳转等动作,是Web UI自动化测试、数据抓取(需遵守Robots协议)的基础设施。无论你是测试工程师、开发人员想自测,还是对自动化感兴趣的学习者,这套环境都是你的起点。别被“环境配置”吓到,跟着我的步骤,避开我当年踩过的所有坑,半小时内让你看到第一个自动化脚本成功运行起来。
2. 环境整体设计与核心工具选型解析
在动手之前,我们得先搞清楚要装哪些东西,以及为什么是它们。一个完整的Java Selenium环境,远不止是装个JDK和Selenium库那么简单,它是一个精心搭配的工具链。
2.1 核心四件套:JDK、IDE、构建工具与浏览器驱动
1. JDK (Java Development Kit) 这是Java程序的运行和编译环境,没有它,一切免谈。为什么不用JRE?因为我们需要 javac 编译器来将 .java 文件变成 .class 文件。版本选择上,我强烈建议选择 JDK 8 (LTS) 或 JDK 11 (LTS) 。LTS代表长期支持,社区资源最丰富,兼容性最好。对于Selenium来说,JDK 8完全够用且极其稳定。最新版的JDK当然也可以,但可能会遇到一些第三方库兼容性的小问题,对于新手,稳定压倒一切。
2. 集成开发环境 (IDE) 写代码总得有个趁手的编辑器。对于Java项目, IntelliJ IDEA Community Edition(免费版) 是绝大多数人的首选。它智能提示强大,对Maven支持完美,调试方便。Eclipse也可以,但IDEA在易用性和生态上目前确实更胜一筹。当然,如果你偏爱轻量级,VS Code配上Java扩展包也能用,但对于复杂的项目管理和依赖处理,IDEA还是更省心。
3. 构建与依赖管理工具:Maven 这是关键一环。早期我们手动下载 selenium-java.jar 和它的依赖包(比如 commons-io , guava 等),然后一个个添加到项目里,繁琐且极易出现版本冲突。Maven解决了这个问题。你只需要在一个叫 pom.xml 的文件里声明:“我需要Selenium Java版本3.141.59”,Maven就会自动从中央仓库下载该版本及其所有依赖。它还能帮你编译、打包项目。 Gradle 是另一个选择,功能更强大灵活,但学习曲线稍陡。对于新手和大多数项目,Maven的简单、稳定、文档丰富是最大优势。
4. Selenium WebDriver 与 浏览器驱动 这是核心中的核心。Selenium WebDriver是一组语言绑定的API(我们用的 selenium-java ),它定义了一套如何操作浏览器的标准(如 findElement , click )。但光有API不行,它需要和一个具体的“翻译官”对话,这个“翻译官”就是 浏览器驱动 。
- ChromeDriver : 用于控制Chrome或Edge(Chromium内核)。
- GeckoDriver : 用于控制Firefox。
- 其他驱动 :如
Microsoft WebDriverfor Edge (旧版)。
这里有一个 必须牢记的黄金法则 :浏览器驱动的版本必须与你电脑上安装的 浏览器主版本号完全一致 。比如你Chrome是120.0.6099.109,那么你必须使用版本号为120.x.x.x的ChromeDriver。版本不匹配是新手最常遇到的“浏览器打不开”或“莫名报错”的根源。
2.2 环境配置思路与目录规划
我们的配置思路是:系统级配置(JDK) -> 项目级配置(Maven, IDE) -> 运行时配置(驱动)。我建议在电脑上建立一个清晰的工作目录,例如:
D:\AutomationLab
├── tools/
│ ├── jdk-8u381/ # JDK安装目录
│ ├── apache-maven-3.9.6/ # Maven安装目录
│ └── webdrivers/ # 存放所有浏览器驱动
│ ├── chromedriver.exe
│ └── geckodriver.exe
└── projects/ # 未来的Java项目都放这里
清晰的目录结构有助于后续环境变量的配置和日常管理,避免文件散落各处。
3. 分步实操:从零开始搭建环境
现在,我们进入实战环节。我会以Windows系统为例,macOS和Linux的思路完全一致,只是安装包和终端命令稍有不同。
3.1 第一步:安装与配置JDK
- 下载 :前往Oracle官网或Adoptium等开源站点,下载JDK 8或JDK 11的安装包(如
jdk-8u381-windows-x64.exe)。 - 安装 :运行安装程序。 关键点 :记住你的安装路径,比如
C:\Program Files\Java\jdk1.8.0_381。最好不要安装在有中文或空格的路径下。 - 配置环境变量 :这是让系统在任何位置都能识别
java和javac命令的关键。- 打开“系统属性” -> “高级” -> “环境变量”。
- 在“系统变量”部分,新建变量名
JAVA_HOME,变量值为你的JDK安装路径(例如C:\Program Files\Java\jdk1.8.0_381)。 - 找到并编辑“系统变量”中的
Path变量,在末尾添加%JAVA_HOME%\bin。
- 验证 :打开命令提示符(CMD),输入
java -version和javac -version。如果正确显示版本信息,说明JDK配置成功。
注意 :
JAVA_HOME这个变量名是很多Java工具(如Maven、Tomcat)的默认约定,务必正确设置。Path中添加的是%JAVA_HOME%\bin,而不是直接指向java.exe,这样即使未来JDK路径变更,也只需改JAVA_HOME一处。
3.2 第二步:安装与配置Maven
- 下载 :从Apache Maven官网下载二进制压缩包(如
apache-maven-3.9.6-bin.zip)。 - 解压 :将其解压到你规划好的目录,例如
D:\AutomationLab\tools\apache-maven-3.9.6。 - 配置环境变量 :
- 新建系统变量
MAVEN_HOME,值为你的Maven解压路径(例如D:\AutomationLab\tools\apache-maven-3.9.6)。 - 编辑
Path变量,添加%MAVEN_HOME%\bin。
- 新建系统变量
- 验证 :打开新的CMD,输入
mvn -v。正确输出会显示Maven版本、Java版本等信息。 - (可选但推荐)配置本地仓库与镜像 :Maven默认从国外仓库下载依赖,速度可能慢。我们可以修改其配置文件
conf/settings.xml。- 修改本地仓库位置 :找到
<localRepository>标签,默认是注释掉的。可以取消注释并设置一个自定义路径,如<localRepository>D:\AutomationLab\.m2\repository</localRepository>,避免依赖库塞满C盘。 - 配置国内镜像 :在
<mirrors>标签内添加阿里云镜像,能极大提升下载速度。
<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> - 修改本地仓库位置 :找到
3.3 第三步:安装IntelliJ IDEA并创建Maven项目
- 下载安装 :从JetBrains官网下载IDEA Community版,按向导安装。
- 创建新项目 :启动IDEA,选择“New Project”。
- 左侧选择
Maven。 - 确保
Project SDK已经识别到你刚才安装的JDK(如1.8)。 - 填写
GroupId(通常用公司域名倒写,如com.mycompany)和ArtifactId(项目名,如selenium-demo)。 - 选择项目存放位置,最好放在你规划的
projects目录下。
- 左侧选择
- 等待初始化 :创建完成后,IDEA会自动下载Maven相关插件。第一次可能会慢些,如果你配了镜像,会快很多。
3.4 第四步:在Maven项目中引入Selenium依赖
项目创建好后,核心就是配置 pom.xml 文件。这是Maven项目的“心脏”。
- 在IDEA的项目视图中,找到并打开
pom.xml文件。 - 在
<dependencies>标签内,添加Selenium Java的依赖。目前最广泛使用的稳定版本是3.141.59(Selenium 4有较大改动,我们稍后讨论)。<dependencies> <!-- Selenium Java Client --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> </dependencies> - 保存
pom.xml文件。IDEA会自动在右上角弹出提示,点击“Import Changes”或“Enable Auto-Import”,Maven就会开始从仓库下载selenium-java及其所有传递依赖。 - 你可以在IDEA右侧边栏打开“Maven”工具窗口,点击项目的“刷新”按钮,同样可以触发依赖下载。
实操心得 :依赖下载过程中,网络问题可能导致失败。如果遇到某个
jar包一直下载不下来,可以尝试:
- 检查Maven镜像配置是否正确。
- 在CMD中进入项目根目录,手动执行
mvn dependency:resolve命令。- 最彻底的方式是删除本地仓库(
.m2/repository)中对应的失败文件夹,然后重新下载。
3.5 第五步:下载与配置浏览器驱动
这是将Selenium代码与真实浏览器连接起来的关键桥梁。
- 查看浏览器版本 :打开你的Chrome浏览器,在地址栏输入
chrome://version/,查看第一行的“Google Chrome”版本号(例如120.0.6099.109)。 - 下载对应驱动 :
- ChromeDriver :访问ChromeDriver官方下载站或国内镜像站。找到与你的Chrome 主版本号(120) 一致的驱动版本下载。如果找不到完全一致的,选择版本号最接近的(通常主版本一致即可)。
- GeckoDriver (for Firefox) :从GitHub的Mozilla releases页面下载。
- 放置驱动 :将下载的驱动(如
chromedriver.exe,geckodriver.exe)解压,放到一个你喜欢的、 没有中文和空格 的目录,比如我们之前规划的D:\AutomationLab\tools\webdrivers\。 - 配置驱动路径(三种方法,推荐第一种) :
- 方法一:System.setProperty(最常用,最灵活) :在Java代码中,启动浏览器前设置系统属性。
System.setProperty("webdriver.chrome.driver", "D:/AutomationLab/tools/webdrivers/chromedriver.exe"); WebDriver driver = new ChromeDriver(); - 方法二:添加到系统Path :将驱动所在目录(如
D:\AutomationLab\tools\webdrivers)添加到系统的Path环境变量中。这样Selenium会自动在Path中查找驱动。但如果你有多个版本驱动需要管理,会不太方便。 - 方法三:使用WebDriverManager(强烈推荐给新手和追求简洁者) :这是一个第三方库,可以自动帮你下载、匹配和管理驱动。只需在
pom.xml中添加其依赖,代码中无需再设置System.setProperty。
代码中只需:<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.6.2</version> </dependency>
WebDriverManager会自动处理版本匹配和下载,极大简化了驱动管理。这是我目前最推荐的方式。WebDriverManager.chromedriver().setup(); WebDriver driver = new ChromeDriver();
- 方法一:System.setProperty(最常用,最灵活) :在Java代码中,启动浏览器前设置系统属性。
4. 编写并运行第一个Selenium测试脚本
环境就绪,我们来写一个简单的脚本验证一切是否正常。这个脚本将打开百度首页,搜索一个关键词,并验证页面标题。
4.1 创建Java类与基础代码结构
- 在IDEA项目的
src/main/java目录下,右键新建一个包(package),例如com.mycompany.demo。 - 在该包下新建一个Java类,命名为
FirstSeleniumTest。 - 写入以下代码。这里我们使用WebDriverManager来管理驱动,避免手动配置路径的麻烦。
package com.mycompany.demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;
public class FirstSeleniumTest {
public static void main(String[] args) throws InterruptedException {
// 1. 使用WebDriverManager自动设置ChromeDriver
WebDriverManager.chromedriver().setup();
// 2. 实例化ChromeDriver对象,这会打开一个空的Chrome浏览器窗口
WebDriver driver = new ChromeDriver();
// 3. 最大化浏览器窗口(非必须,但好看)
driver.manage().window().maximize();
// 4. 导航到百度首页
driver.get("https://www.baidu.com");
System.out.println("已打开页面: " + driver.getTitle());
// 5. 定位搜索框,输入搜索词
WebElement searchBox = driver.findElement(By.id("kw"));
searchBox.sendKeys("Selenium自动化测试");
// 6. 定位“百度一下”按钮并点击
WebElement searchButton = driver.findElement(By.id("su"));
searchButton.click();
// 7. 等待2秒,让搜索结果加载(生产环境应用显式等待,此处为演示)
Thread.sleep(2000);
// 8. 打印当前页面标题
System.out.println("搜索后页面标题: " + driver.getTitle());
// 9. 关闭浏览器
driver.quit();
}
}
4.2 代码逐行解析与运行
- 导入依赖 :开头的
import语句引入了我们需要的类。WebDriver是主接口,ChromeDriver是其具体实现,By用于定位元素,WebElement代表页面上的一个元素。 - WebDriverManager :
WebDriverManager.chromedriver().setup();这一行是魔法所在。它检查系统已安装的Chrome版本,自动下载匹配的chromedriver,并设置好系统属性。你完全不用操心驱动在哪、版本对不对。 - 实例化驱动 :
new ChromeDriver()会启动一个新的Chrome浏览器进程。如果你看到弹出了一个空白的Chrome窗口,恭喜你,成功了一大半! - 导航与交互 :
driver.get(url)让浏览器加载指定网址。findElement是核心方法,它通过By.id定位器找到了页面上ID为kw(百度搜索框)和su(百度按钮)的元素。sendKeys用于输入文本,click用于模拟点击。 - 等待 :
Thread.sleep(2000)是 强制等待(硬等待) ,会让线程暂停2秒。这在简单演示中可用,但在真实自动化脚本中是 不推荐 的,因为它效率低下且不稳定。应该使用 显式等待(Explicit Wait) ,例如WebDriverWait,让代码等待某个条件成立(如元素可见)后再继续,更智能。 - 关闭浏览器 :
driver.quit()会关闭所有由该驱动打开的窗口并结束驱动进程。与之对应的driver.close()只关闭当前标签页。通常测试结束时用quit()更干净。
运行 :在IDEA中,右键点击 FirstSeleniumTest 类,选择 Run 'FirstSeleniumTest.main()' 。你应该会看到:
- 一个Chrome浏览器自动打开。
- 浏览器导航到百度。
- 在搜索框中自动输入“Selenium自动化测试”并点击搜索。
- 控制台输出打开的页面标题。
- 最后浏览器自动关闭。
如果这一切都顺利发生,那么你的Java Selenium环境就完美配置成功了!
5. 进阶配置与最佳实践
基础环境跑通后,为了更高效、更稳定地开展自动化工作,我们还需要进行一些进阶配置。
5.1 使用显式等待替代硬等待
硬等待 Thread.sleep() 是万恶之源。它固定等待时间,不管页面是否加载完成。网络或机器慢时可能不够,快时又浪费。显式等待是Selenium的最佳实践之一。
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;
import java.time.Duration;
// ... 在driver实例化之后 ...
// 创建一个最长等待10秒的WebDriverWait对象
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
// 在点击搜索按钮后,等待搜索结果页面的标题包含“Selenium”
wait.until(ExpectedConditions.titleContains("Selenium"));
// 或者等待某个结果元素出现
WebElement firstResult = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.result h3 a")));
firstResult.click();
ExpectedConditions 提供了大量预定义条件,如元素可见、可点击、存在等。这使你的脚本更健壮,能适应网络波动。
5.2 浏览器选项配置
直接 new ChromeDriver() 使用的是浏览器默认配置。我们通常需要一些定制化选项。
import org.openqa.selenium.chrome.ChromeOptions;
ChromeOptions options = new ChromeOptions();
// 1. 无头模式:不显示浏览器GUI,在服务器上运行必备
// options.addArguments("--headless");
// 2. 禁用GPU加速(某些环境下无头模式需要)
// options.addArguments("--disable-gpu");
// 3. 禁用浏览器通知
options.addArguments("--disable-notifications");
// 4. 忽略证书错误(用于测试HTTPS环境)
// options.setAcceptInsecureCerts(true);
// 5. 设置默认下载目录
HashMap<String, Object> prefs = new HashMap<>();
prefs.put("download.default_directory", "D:/Downloads");
options.setExperimentalOption("prefs", prefs);
WebDriver driver = new ChromeDriver(options);
无头模式在CI/CD流水线中非常有用,可以节省资源。但调试时最好关闭,以便观察浏览器行为。
5.3 项目结构优化与测试框架集成
一个真正的自动化项目不会把所有代码都写在 main 方法里。我们通常会引入测试框架,如 JUnit 5 或 TestNG ,来组织测试用例。
-
在
pom.xml中添加JUnit 5依赖 :<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.10.0</version> <scope>test</scope> </dependency> -
创建基于JUnit的测试类 : 在
src/test/java下创建包和类。package com.mycompany.test; import org.junit.jupiter.api.*; import org.openqa.selenium.*; import io.github.bonigarcia.wdm.WebDriverManager; import static org.junit.jupiter.api.Assertions.*; public class BaiduSearchTest { private WebDriver driver; @BeforeEach void setUp() { WebDriverManager.chromedriver().setup(); driver = new ChromeDriver(); driver.manage().window().maximize(); } @Test void testSearchFunction() { driver.get("https://www.baidu.com"); driver.findElement(By.id("kw")).sendKeys("JUnit 5"); driver.findElement(By.id("su")).click(); // 使用显式等待 new WebDriverWait(driver, Duration.ofSeconds(5)) .until(ExpectedConditions.titleContains("JUnit 5")); assertTrue(driver.getTitle().contains("JUnit 5")); } @AfterEach void tearDown() { if (driver != null) { driver.quit(); } } }这样,
setUp和tearDown方法保证了每个测试前后浏览器的启动和关闭,测试逻辑集中在@Test方法中,结构清晰,利于扩展和维护。
5.4 关于Selenium 4的说明
我们之前使用的是Selenium 3。Selenium 4已经发布,它带来了一些重要的新特性和改进:
- 相对定位器 :可以更容易地根据元素间相对位置(above, below, toLeftOf等)定位元素。
- 新的窗口和标签页管理 :API更直观。
- 对Chrome DevTools协议的原生支持 :可以模拟网络、地理位置、性能指标等。
- 改进的等待机制 。
对于新项目,可以考虑直接从Selenium 4开始。只需将 pom.xml 中的依赖版本改为 4.15.0 (或更高稳定版)。大部分Selenium 3的代码在4上可以无缝运行。WebDriverManager对Selenium 4的支持也很好。升级时主要注意一些废弃方法的替换即可。
6. 常见问题与排查技巧实录
即使按照步骤操作,你也可能会遇到一些问题。这里我整理了最常遇到的“坑”及其解决方案。
6.1 驱动相关问题
问题1:浏览器能打开,但立刻闪退,控制台报错 IllegalStateException: The path to the driver executable must be set by...
- 原因 :Selenium没找到浏览器驱动。
- 排查 :
- 如果使用
System.setProperty,检查路径字符串是否正确,是否使用了/或\\,文件是否存在。 - 如果使用
Path环境变量,确认是否已重启CMD或IDE以使新的Path生效。 - 终极方案 :使用WebDriverManager,让它自动处理。
- 如果使用
问题2:浏览器打不开,报错 SessionNotCreatedException: This version of ChromeDriver only supports Chrome version XX
- 原因 :ChromeDriver版本与Chrome浏览器版本不匹配。这是最高频的错误。
- 解决 :
- 精确核对版本。
chrome://version/查看浏览器版本,去下载站找对应主版本的驱动。 - 如果浏览器自动更新到了更新版本,而驱动未更新,也会出现此问题。需要重新下载匹配的驱动。
- 同样,使用WebDriverManager可以自动解决此问题。
- 精确核对版本。
问题3:代码执行到 new ChromeDriver() 就卡住不动,无任何报错
- 原因 :可能是网络问题导致浏览器启动慢,或者杀毒软件/防火墙拦截。
- 排查 :
- 检查任务管理器,是否有
chromedriver.exe和chrome.exe进程。如果有,耐心等待一下。 - 尝试在
ChromeOptions中添加--no-sandbox和--disable-dev-shm-usage参数(常见于Linux Docker环境,Windows有时也需要)。options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); - 临时关闭杀毒软件或防火墙试试。
- 检查任务管理器,是否有
6.2 元素定位与交互问题
问题4: NoSuchElementException 找不到元素
- 原因 :这是自动化测试中最常见的异常。原因多样。
- 排查步骤 :
- 时机不对 :页面还没加载完就去查找元素。 解决方案 :使用显式等待(
WebDriverWait)等待元素出现、可见或可点击。 - 定位器写错 :ID、Class或XPath写错了。 解决方案 :在浏览器开发者工具(F12)的Console中,用JavaScript验证定位器,如
$('#kw')或$x('//input[@id="kw"]')。 - 元素在iframe/frame内 :需要先切换到对应的frame里才能找到元素。使用
driver.switchTo().frame(frameElement)。 - 元素在Shadow DOM内 :需要使用
driver.findElement(By.cssSelector("...")).getShadowRoot()来穿透Shadow DOM。 - 页面有多个匹配元素 :
findElement只返回第一个。确保你的定位器能唯一标识目标元素。
- 时机不对 :页面还没加载完就去查找元素。 解决方案 :使用显式等待(
问题5:元素找到了,但 click() 或 sendKeys() 不生效
- 原因 :元素可能被遮挡、不可见、不可交互,或者有前置操作(如需要先点击某个按钮激活输入框)。
- 解决 :
- 使用
ExpectedConditions.elementToBeClickable(locator)进行等待,确保元素可交互。 - 尝试用JavaScript直接执行点击:
((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);。这可以绕过一些前端框架的交互限制。 - 检查是否有弹窗、蒙层遮挡了目标元素。
- 使用
6.3 环境与依赖问题
问题6:Maven依赖下载失败, pom.xml 飘红
- 原因 :网络问题、仓库地址错误、本地仓库损坏。
- 解决 :
- 确认
settings.xml中配置了正确的国内镜像(阿里云)。 - 在IDEA中,尝试右键项目 -> Maven -> Reload project。
- 在命令行进入项目目录,执行
mvn clean compile -U,-U参数强制更新快照依赖。 - 删除本地仓库(
.m2/repository)中对应的依赖目录,重新下载。
- 确认
问题7:运行时报 UnsupportedClassVersionError
- 原因 :编译版本和运行版本不一致。比如用JDK 11编译,但用JDK 8运行。
- 解决 :统一JDK版本。在IDEA中检查两个地方:
File -> Project Structure -> Project下的Project SDK和Project language level;以及File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler下的Target bytecode version。确保它们与你安装的JDK版本匹配。
6.8 浏览器被检测为自动化工具
问题8:某些网站(如一些登录页面)能检测到Selenium,并阻止自动化操作
- 现象 :手动打开浏览器正常,但通过Selenium打开的浏览器,网站功能异常或直接拒绝访问。
- 原因 :Selenium驱动的浏览器会带有一些特定的JavaScript变量(如
navigator.webdriver为true)或特征,被网站的反爬虫/反自动化机制识别。 - 应对策略(需遵守网站使用条款) :
- 使用
ChromeOptions隐藏特征 (仅对部分检测有效):ChromeOptions options = new ChromeOptions(); options.addArguments("--disable-blink-features=AutomationControlled"); options.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"}); options.setExperimentalOption("useAutomationExtension", false); - 使用
undetected-chromedriver等第三方库 :这是一个专门为绕过检测而修改的ChromeDriver,但请注意法律和道德边界,仅用于授权的测试。 - 核心原则 :自动化测试应针对自家产品或获得明确授权的系统。对于第三方公开网站,应尊重其
robots.txt和服务条款,避免滥用。
- 使用
环境配置是自动化之旅的第一步,也是最容易让人沮丧的一步。我希望这份超详细的指南,不仅能帮你把环境搭起来,更能让你理解每一个步骤背后的原理。当你遇到问题时,不要慌张,按照第六部分的排查思路,大部分问题都能迎刃而解。记住,使用WebDriverManager和显式等待这两个工具,能帮你避开80%的常见坑。接下来,你就可以专注于学习Selenium更强大的API,设计更健壮的测试用例和框架了。自动化测试的世界很大,稳扎稳打,从写好第一个脚本开始。
更多推荐
所有评论(0)