Java自动化(三)之保姆级操作步骤完整搭建
之前出过一篇自动化搭建操作比较粗浅,由于小编技术小成,嘿嘿....这篇操作更加细致,更加丰富,并且添加了基础父类 + Web驱动工具 + 接口通用工具 + 全局常量类,复制即用,和Maven依赖、目录结构完全配套。
一、所需软件。
1、JDK8(必装)
2、IDEA
3、Maven3.8+
4、Chrome浏览器
二、环境配置。
1、JDK配置
1.1:安装JDK8
1.2:系统环境变量:
JAVA_HOME:jdk安装根目录
Path添加: %JAVA_HOME%\bin
校验cmd:
plaintext
java -version
2、Maven配置
2.1、解压Maven
2.2、系统环境变量
M2_HOME:maven根目录
Path添加: %M2_HOME%\bin ;
2.3、配置maven核心conf/settings.xml
xml
<!--本地仓库路径-->
<localRepository>D:/maven/repo</localRepository>
<!--阿里云镜像-->
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
重点!!!cmd校验: mvn -v
3、IDEA全局配置
3.1:设置Maven:File–Settings–Build–Maven;
Maven home:选中自己解压的maven
User settings file:勾选,选中自定义settings.xml
Local repository:自动识别
3.2:编码的统一
全部UTF-8编码
勾选编译自动导入。
三、创建自动化Maven项目
1、IDEA新建Maven项目,不用骨架
2、粘贴完整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.auto</groupId>
<artifactId>java-auto-test</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<junit.version>5.9.2</junit.version>
<rest.version>5.3.0</rest.version>
<selenium.version>4.15.0</selenium.version>
</properties>
<dependencies>
<!--JUnit5-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!--接口自动化-->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>${rest.version}</version>
<scope>test</scope>
</dependency>
<!--UI自动化-->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
<scope>test</scope>
</dependency>
<!--日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.36</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
</build>
</project>
3、刷新maven,自动下载全部依赖。
四、固定项目目录(直接照建、也可按照自己习惯来建)
plaintext
src/test/java
├─common 公共工具、常量、父类
├─api 接口用例
├─web UI自动化用例
├─unit 单元测试
└─pojo 请求响应实体类
五、粘贴4个公共工具类
1、Constant 全局配置
java
package common;
public class Constant {
public static final String API_URL = "https://httpbin.org";
public static final String BROWSER = "chrome";
public static String TOKEN = "";
}
2、BaseTest 测试父类
Java
package common;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
public class BaseTest {
@BeforeEach
public void before(){
}
@AfterEach
public void after(){
}
}
3、ApiUtil 接口请求封装
java
package common;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import io.restassured.response.Response;
import java.util.Map;
public class ApiUtil {
public static Response get(String url){
return RestAssured.given()
.baseUri(Constant.API_URL)
.header("Authorization",Constant.TOKEN)
.when().get(url);
}
public static Response postJson(String url,Object body){
return RestAssured.given()
.baseUri(Constant.API_URL)
.header("Authorization",Constant.TOKEN)
.contentType(ContentType.JSON)
.body(body)
.when().post(url);
}
}
4、WebDriverUtil浏览器工具
java
package common;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import java.time.Duration;
public class WebDriverUtil {
public static WebDriver driver;
public static WebDriver initBrowser(String browser){
if("chrome".equals(browser)){
driver=new ChromeDriver();
}else if("edge".equals(browser)){
driver=new EdgeDriver();
}
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
return driver;
}
public static void close(){
if(driver!=null) driver.quit();
}
}
六、运行测试Demo
接口测试
java
package api;
import common.ApiUtil;
import common.BaseTest;
import org.junit.jupiter.api.Test;
import static org.hamcrest.Matchers.equalTo;
public class ApiDemo extends BaseTest {
@Test
public void getTest(){
ApiUtil.get("/get")
.then().statusCode(200);
}
}
UI测试
java
package web;
import common.BaseTest;
import common.Constant;
import common.WebDriverUtil;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
public class WebDemo extends BaseTest {
static WebDriver driver;
@BeforeAll
static void start(){
driver= WebDriverUtil.initBrowser(Constant.BROWSER);
}
@Test
void baidu(){
driver.get("https://www.baidu.com");
}
@AfterAll
static void end(){
WebDriverUtil.close();
}
}
七、运行命令
1、单个用例:右键run
2、全部用例maven命令:
plaintext
mvn test
八、遇到的环境报错汇总
1、依赖爆红:刷新maven、换阿里云镜像
2、浏览器启动失败:selenium4自动适配驱动,无需下载驱动
3、编码报错:全部设置UTF-8
———————————————————————————————————————
番外!!!!
我在下面给大家找到一些:基础父类 + Web驱动工具 + 接口通用工具 + 全局常量类,复制即用,和上面Maven依赖、目录结构完全配套。
一、常量配置类
java
package common;
/**
* 全局配置
*/
public class Constant {
// 接口基础地址
public static final String API_BASE_URL = "https://httpbin.org";
// 测试浏览器
public static final String BROWSER_CHROME = "chrome";
// 全局token
public static String TOKEN = "";
}
二、测试基类(所有测试类继承)
java
package common;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
/**
* 测试基类:统一前置/后置
*/
public class BaseTest {
@BeforeEach
void setUp() {
// 可统一初始化:打印日志、初始化配置
}
@AfterEach
void tearDown() {
// 统一后置:关闭资源、清除cookie
}
}
三、WebUI 驱动工具类(Selenium封装)
java
package common;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.time.Duration;
/**
* 浏览器驱动工具类
*/
public class WebDriverUtil {
public static WebDriver driver;
public static WebDriverWait wait;
/**
* 初始化浏览器
*/
public static WebDriver initBrowser(String browser) {
switch (browser.toLowerCase()) {
case "chrome":
driver = new ChromeDriver();
break;
case "edge":
driver = new EdgeDriver();
break;
default:
throw new RuntimeException("不支持当前浏览器");
}
// 隐式等待
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
// 显式等待
wait = new WebDriverWait(driver, Duration.ofSeconds(15));
// 窗口最大化
driver.manage().window().maximize();
return driver;
} /**
* 关闭浏览器
*/
public static void closeBrowser() {
if (driver != null) {
driver.quit();
}
}
}
四、接口通用请求工具类(RestAssured封装)
java
package common;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import io.restassured.response.Response;
import java.util.Map;
/**
* 接口请求工具类
* 封装 get / post / put / delete
*/
public class ApiUtil {
/**
* 无参GET请求
*/
public static Response get(String url) {
return RestAssured.given()
.baseUri(Constant.API_BASE_URL)
.header("Authorization", Constant.TOKEN)
.when()
.get(url);
}
/**
* 带请求头+参数GET
*/
public static Response get(String url, Map<String, String> headers, Map<String, Object> params) {
return RestAssured.given()
.baseUri(Constant.API_BASE_URL)
.headers(headers)
.params(params)
.when()
.get(url);
}
/**
* JSON格式POST
*/
public static Response postJson(String url, Object body) {
return RestAssured.given()
.baseUri(Constant.API_BASE_URL)
.header("Authorization", Constant.TOKEN)
.contentType(ContentType.JSON)
.body(body)
.when()
.post(url);
}
/**
* JSON PUT
*/
public static Response putJson(String url, Object body) {
return RestAssured.given()
.baseUri(Constant.API_BASE_URL)
.contentType(ContentType.JSON)
.body(body)
.when()
.put(url);
} /**
* DELETE
*/
public static Response delete(String url) {
return RestAssured.given()
.baseUri(Constant.API_BASE_URL)
.when()
.delete(url);
}
}
五、改造后的测试用例(继承基类,直接调用工具)
1、接口测试用例
java
package api;
import common.ApiUtil;
import common.BaseTest;
import org.junit.jupiter.api.Test;
import static org.hamcrest.Matchers.equalTo;
public class ApiDemoTest extends BaseTest { @Test
void testGet() {
ApiUtil.get("/get")
.then()
.statusCode(200)
.body("url", equalTo("https://httpbin.org/get"));
}
}
2、WebUI 测试用例
java
package web;
import common.BaseTest;
import common.Constant;
import common.WebDriverUtil;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
public class WebDemoTest extends BaseTest {
public static WebDriver driver;
@BeforeAll
static void before() {
driver = WebDriverUtil.initBrowser(Constant.BROWSER_CHROME);
}
@Test
void openBaidu() {
driver.get("https://www.baidu.com");
System.out.println("页面标题:" + driver.getTitle());
}
@AfterAll
static void after() {
WebDriverUtil.closeBrowser();
}
}
献丑了 可能会有些枯燥,但期望各位大大给出指正 ……^ - ^……
致辞跪谢大老爷们
更多推荐
所有评论(0)