Eclipse+maven+selenium自动化测试用例入门

相关的开发环境搭建参考以下文章:

Eclipse+maven+selenium自动化测试开发环境搭建

确认环境搭建成功后,在src/test/java目录下,defaut package右键新建class,命名为:GoogleTest,相关代码如下:

java 复制代码
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import io.github.bonigarcia.wdm.WebDriverManager;
import java.time.Duration;

public class GoogleTest {
	
	WebDriver driver;
	
	@BeforeEach
	void setup() {
		
		WebDriverManager.chromedriver().setup();
		driver = new ChromeDriver();
		
	}
	
	
	@Test
	void googleSearchTest() {
		
		driver.get("https://www.google.com");
		//element search
		driver.findElement(By.name("q")).sendKeys("Selenium WebDriver");
		driver.findElement(By.name("q")).submit();
		
		//Explicit Wait
		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
		wait.until(ExpectedConditions.titleContains("Selenium WebDriver"));
		
		//assert
		assertTrue(driver.getTitle().contains("Selenium"));
		
	}
	
	@AfterEach
	void tearDown() {
		driver.quit();
	}
	
	
}

@BeforeEach中的setup方法初始化webdriver,这两行代码必不可少,否则可能出现意想不到的错误。

WebDriverManager.chromedriver().setup();

driver = new ChromeDriver();

@Test中开始真正的测试了。

driver.get("https://www.google.com"); //打开google主页

driver.findElement(By.name("q")).sendKeys("Selenium WebDriver"); //找到搜索框,并输入Selenium WebDriver

driver.findElement(By.name("q")).submit(); //相当于回车执行搜索

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); //设置显式等待,等待时间为10秒,当然3秒、5秒也可以。

wait.until(ExpectedConditions.titleContains("Selenium WebDriver")); //在10秒内等待,直到页面出现期待结果,包含Selenium WebDriver的信息。

assertTrue(driver.getTitle().contains("Selenium")); //断言设置结果为:网页title包含Selenium,测试通过。

@AfterEach中设置销毁driver,释放资源。更加严谨的逻辑是先判断driver是否还存在,如果存在执行driver.quit(); 这里不加赘述,自行研究。

void tearDown() {

driver.quit();

}

以上代码没有语法问题后,在GoogleTest.java点击右键,run as--->junit test

可以看到执行成功。到这里自动化测试算是入门了一条腿了。

到这里,我们可以发现,如果每个测试class都加上@BeforeEach,@AfterEach,并且Test中元素查找、页面等待都包含在内的话,代码显得臃肿,且维护复杂。如果将@BeforeEach @AfterEach等提取出去,并且把测试相关的页面、元素查找、用例成功的要素等单独封装到其他的类中,测试类就只关注测试步骤,这样测试就变得容易维护了。这里也就是常说的Page Obejcet Model页面对象模型。接下来会继续发布POM相关的实践过程。

相关推荐
缘空如是1 天前
java 构建代码推送maven 公共仓
java·开发语言·maven
Knight_AL1 天前
在 Windows 上安装本地 JAR 到 Maven 仓库
windows·maven·jar
爱敲代码的小鱼1 天前
Maven的简介:
java·maven
程序员三藏2 天前
selenium测试框架快速搭建
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
不会代码的小测试2 天前
UI自动化-日期插件的选择-可输入不可输入情况
javascript·vue.js·python·selenium·自动化
不会c+2 天前
Maven私服的搭建与使用
java·maven
月明长歌2 天前
个人测试项目:一个可跑、可扩、可复用的 Selenium UI 自动化博客系统全链路测试拆解
selenium·ui·自动化
_周游2 天前
Java8 API 文档搜索引擎_1. 项目简介与模块划分
java·搜索引擎·servlet·maven·intellij-idea
你想考研啊2 天前
win11配置maven
java·数据库·maven
好好沉淀2 天前
Java 开发环境概念速查笔记(JDK / SDK / Maven)
java·笔记·maven