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相关的实践过程。

相关推荐
VX_bysjlw98515 小时前
基于协同过滤的美食推荐系统的设计与实现32221-计算机毕设原创(免费领源码+带部署教程)
java·spring boot·redis·mysql·tomcat·maven·mybatis
P1Browser19 小时前
Puppeteer 与 Selenium 技术对比:多账号自动化管理如何做环境隔离?
selenium·测试工具·自动化
不像程序员的程序媛1 天前
maven基础
python·pycharm·maven
2301_32241428042 天前
基于SSM框架的在线考试管理系统的设计与实现14750-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·redis·mysql·tomcat·maven·mybatis·ssm
鸽鸽程序猿3 天前
【项目】【在线判题系统】公共功能
java·spring boot·maven
砚底藏山河3 天前
python量化:行情数据回溯
java·开发语言·python·金融·maven
毕业设计7034 天前
(免费领源码)SSM董家湾线上点餐系统04682- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·redis·mysql·tomcat·maven·mybatis·ssm
技术小结-李爽4 天前
【工具】怎么在终端中启动springboot项目?
java·spring boot·后端·maven
知守观4 天前
Maven 依赖仲裁实战:pom 里写的 2.0,为什么打出的 WAR 包是 1.5?
java·后端·maven
Yyyyyy~4 天前
【Maven】基础
java·maven