Java UI自动化测试环境搭建(基于Selenium + TestNG,适配JDK8,附常见问题以及解决方案)
一、基础环境准备
1.安装jdk
2.安装maven 3.6+
3.安装IDE(IDEA或Eclipse)
二、UI自动化核心依赖配置(Maven方式)
4.创建Maven项目
①打开idea->new Project->选择Maven,勾选"Create from archetype"->选择“org.apache.maven.archetypes:maven-archetype-quickstart”
② 填写GroupId(如com.test)、ArtifactId(如java-test-demo)->Next
③ 确认Maven路径(自动识别)->Finish,等待项目初始化
5.配置pom.xml依赖
加入Selenium、TestNG、WebDriverManager依赖(经验证,以下版本完全适配JDK8)
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>compile</scope>
</dependency>
三、浏览器驱动配置(WebDriverManager自动管理)
四、测试脚本编写与环境验证
在src/test/java下创建测试类,编写简单UI测试脚本
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import io.github.bonigarcia.wdm.WebDriverManager;
public class UIAutoTestDemo {
private WebDriver driver;
@BeforeTest
public void setup() {
// WebDriverManager.chromedriver().setup();
// // 自动配置 Chrome 驱动
// driver = new ChromeDriver();
// driver.manage().window().maximize();
// 手动指定 ChromeDriver 路径(双反斜杠或单斜杠)
System.setProperty("webdriver.chrome.driver", "D:\\other\\chromedriver-win64\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
}
@Test
public void testOpenBaidu() {
driver.get("https://www.baidu.com");
assert driver.getTitle().contains("百度");
}
@AfterTest
public void teardown() {
if (driver != null) {
driver.quit();
}
}
}
五、配置中常见的错误
1.JDK版本与Selenium版本不兼容
Error:(6, 27) java: 无法访问org.openqa.selenium.WebDriver
错误的类文件: /D:/code/repository/org/seleniumhq/selenium/selenium-api/4.15.0/selenium-api-4.15.0.jar!/org/openqa/selenium/WebDriver.class
类文件具有错误的版本 55.0, 应为 52.0
请删除该文件或确保该文件位于正确的类路径子目录中。
Selenium 4.15.0编译时使用的是JDK11(class文件版本55.0),JDK8(仅支持class文件版本52.0)
方案一:升级到JDK11(后续实现)(优选)
方案二:降级Selenium到JDK8兼容版本
①修改Selenium依赖版本为3.141.59
②同步修改WebDriverManager版本为3.8.1
③调整测试脚本(适配Selenium 3.x)
2.JDK版本与TestNG版本不兼容
Error:(8, 30) java: 无法访问org.testng.annotations.AfterTest
错误的类文件: /D:/code/repository/org/testng/testng/7.8.0/testng-7.8.0.jar!/org/testng/annotations/AfterTest.class
类文件具有错误的版本 55.0, 应为 52.0
请删除该文件或确保该文件位于正确的类路径子目录中。
①修改TestNG依赖版本为6.14.3
注:核心原则
JDK8 对应Selenium3.x + TestNG 6.x
JDK11 对应Selenium4.x + TestNG 7.x(优选)
3.ChromeDriver和Chrom浏览器版本不兼容
org.openqa.selenium.SessionNotCreatedException: session not created: This version of ChromeDriver only supports Chrome version 114
Current browser version is 125.0.6422.142 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe
xxxxx.....
Driver info: driver.version: ChromeDriver
使用的ChromeDriver只支持Chrom 114,而浏览器是125版本。
解决方案1:自动管理驱动方式
解决方案2:手动下载匹配驱动
先打开Chrome,输入chrom://version,确认版本为125;
再访问Chrom for Testing下载列表,找到125版本对应的ChromeDriver,下载Windows系统对应的安装包;
解压后得到chromedriver.exe,可放在项目根目录,或配置到系统环境变量PATH中;
最后再代码中指定驱动路径
125版本ChromeDriver如下
{
"version": "125.0.6422.14",
"revision": "1287751",
"downloads": {
"chrome": [
{
"platform": "linux64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/linux64/chrome-linux64.zip"
},
{
"platform": "mac-arm64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/mac-arm64/chrome-mac-arm64.zip"
},
{
"platform": "mac-x64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/mac-x64/chrome-mac-x64.zip"
},
{
"platform": "win32",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/win32/chrome-win32.zip"
},
{
"platform": "win64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/win64/chrome-win64.zip"
}
],
"chromedriver": [
{
"platform": "linux64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/linux64/chromedriver-linux64.zip"
},
{
"platform": "mac-arm64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/mac-arm64/chromedriver-mac-arm64.zip"
},
{
"platform": "mac-x64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/mac-x64/chromedriver-mac-x64.zip"
},
{
"platform": "win32",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/win32/chromedriver-win32.zip"
},
{
"platform": "win64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/win64/chromedriver-win64.zip"
}
],
"chrome-headless-shell": [
{
"platform": "linux64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/linux64/chrome-headless-shell-linux64.zip"
},
{
"platform": "mac-arm64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/mac-arm64/chrome-headless-shell-mac-arm64.zip"
},
{
"platform": "mac-x64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/mac-x64/chrome-headless-shell-mac-x64.zip"
},
{
"platform": "win32",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/win32/chrome-headless-shell-win32.zip"
},
{
"platform": "win64",
"url": "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.14/win64/chrome-headless-shell-win64.zip"
}
]
}
}
更多推荐
所有评论(0)