目录
前言
针对项目需求编写测试用例,对项目进行测试用例的编写和通过Selenium和IUnit单元测试框架,来对项目功能进行自动化测试
一、项目概述
本项目是一个基于 SpringBoot、MyBatis 和 MySQL 构建的在线论坛平台,旨在为用户提供一个便捷、高效的交流平台。平台具备用户注册、登录,退出等基本功能,并支持文章的发布、删除、更新等高级功能。采用Selenium进行自动化测试
二、设计测试用例
总览
1、界面测试用例设计
2、注册登录测试用例设计
3、主页模块设计测试用例
4、个人中心模块测试用例
5、站内信模块测试用例
6、易用性测试用例
7、安全性测试用例
8、兼容性测试用例
9、性能测试用例
三、自动化测试代码
1、登录注册
package forum;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import static java.lang.Thread.sleep;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class LoginTest {
private static ChromeDriver driver;
private static ChromeDriver getDriver() {
if (driver == null) {
driver = new ChromeDriver();
//隐式等待
// driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
}
return driver;
}
@Test
@BeforeAll
static void start() throws InterruptedException {
driver = getDriver();
driver.get("http://39.104.54.203:58880/sign-in.html");
driver.manage().window().maximize();
sleep(2000);
}
//测试页面元素是否正常
@Test
@Order(1)
public void appearance() throws InterruptedException {
String login = driver.findElement(By.xpath("/html/body/div/div/div/div[1]/div/div[2]/div/h2")).getText();
Assertions.assertEquals(login,"用户登录");
String label5 = driver.findElement(By.xpath("//*[@id=\"signInForm\"]/div[1]/label")).getText();
Assertions.assertEquals(label5,"用户名");
String placeholder5 = driver.findElement(By.cssSelector("#username")).getAttribute("placeholder");
Assertions.assertEquals(placeholder5,"请输入用户名");
String label6 = driver.findElement(By.xpath("//*[@id=\"signInForm\"]/div[2]/label")).getText();
Assertions.assertEquals(label6,"密码");
String placeholder6 = driver.findElement(By.cssSelector("#password")).getAttribute("placeholder");
Assertions.assertEquals(placeholder6,"请输入密码");
}
//错误登录
@ParameterizedTest
@CsvSource(value = {"y,123", "yu,123", "yue,123", "yuey,123",
"yueyu,123", "yueyue,123"})
@Order(2)
void falseLogin(String username,String password){
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#username")).sendKeys(username);
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.id("submit")).click();
}
@ParameterizedTest
@CsvSource(value = {"yueyue,yueyue3344", "weizi,123456", "huazi,123456"})
@Order(3)
void rightLogin(String username,String password) throws InterruptedException {
// String windowHandle = driver.getWindowHandle();
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#username")).sendKeys(username);
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.id("submit")).click();
sleep(2000);
// String user = driver.findElement(By.xpath("//*[@id=\"article_list_board_title\"]")).getText();
String user = driver.findElement(By.id("article_list_board_title")).getText();
Assertions.assertEquals(user,"首页");
driver.navigate().back();
}
@Test
@Order(4)
void nullLogin() throws InterruptedException {
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#submit")).click();
sleep(2000);
}
@Test
@Order(5)
void notUnLogin() throws InterruptedException {
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#password")).sendKeys("123");
driver.findElement(By.cssSelector("#submit")).click();
sleep(2000);
}
@Test
@Order(6)
void notPwLogin() throws InterruptedException {
driver.findElement(By.cssSelector("#username")).sendKeys("yue");
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#submit")).click();
sleep(2000);
}
@Test
@Order(7)
void quit(){
driver.quit();
}
}
2、注册测试
package forum;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import static java.lang.Thread.sleep;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class RegistTest {
private static ChromeDriver driver;
private static ChromeDriver getDriver() {
if (driver == null) {
driver = new ChromeDriver();
}
return driver;
}
@Test
@BeforeAll
static void start() throws InterruptedException {
driver = getDriver();
driver.get("http://39.104.54.203:58880/sign-in.html");
driver.manage().window().maximize();
sleep(2000);
}
@Test
@Order(1)
public void registUi(){
String label = driver.findElement(By.xpath("/html/body/div/div/div/div[1]/div/div[3]/a")).getText();
Assertions.assertEquals(label,"点击注册");
driver.findElement(By.xpath("/html/body/div/div/div/div[1]/div/div[3]/a")).click();
String url = driver.getCurrentUrl();
Assertions.assertEquals(url,"http://39.104.54.203:58880/sign-up.html");
String register = driver.findElement(By.xpath("//*[@id=\"signUpForm\"]/div/h2")).getText();
Assertions.assertEquals(register,"用户注册");
String label1 = driver.findElement(By.xpath("//*[@id=\"signUpForm\"]/div/div[1]/label")).getText();
Assertions.assertEquals(label1,"用户名");
String placeholder1 = driver.findElement(By.cssSelector("#username")).getAttribute("placeholder");
Assertions.assertEquals(placeholder1,"请输入用户名");
String label2 = driver.findElement(By.xpath("//*[@id=\"signUpForm\"]/div/div[2]/label")).getText();
Assertions.assertEquals(label2,"昵称");
String placeholder2 = driver.findElement(By.cssSelector("#nickname")).getAttribute("placeholder");
Assertions.assertEquals(placeholder2,"请输入昵称");
String label3 = driver.findElement(By.xpath("//*[@id=\"signUpForm\"]/div/div[3]/label")).getText();
Assertions.assertEquals(label3,"密码");
String placeholder3 = driver.findElement(By.cssSelector("#password")).getAttribute("placeholder");
Assertions.assertEquals(placeholder3,"请输入密码");
String label4 = driver.findElement(By.xpath("//*[@id=\"signUpForm\"]/div/div[4]/label")).getText();
Assertions.assertEquals(label4,"确认密码");
String placeholder4 = driver.findElement(By.cssSelector("#passwordRepeat")).getAttribute("placeholder");
Assertions.assertEquals(placeholder4,"再次输入密码");
}
//注册功能测试
//正确注册、输入两次密码不一致的用户、输入已存在用户
@ParameterizedTest
@CsvSource(value = {"test01,测试01,123,123", "test02,测试02,123,1234","weizi,威子,123456,123456"})
@Order(2)
void registInput(String username,String nickname,String password,String passwordRepeat) throws InterruptedException {
//若当前在登录页面则点击注册跳转至注册页面
if(driver.findElement(By.xpath("//*[@id=\"submit\"]")).getText().equals("登录")){
driver.findElement(By.xpath("/html/body/div/div/div/div[1]/div/div[3]/a")).click();
}
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#username")).sendKeys(username);
driver.findElement(By.cssSelector("#nickname")).clear();
driver.findElement(By.cssSelector("#nickname")).sendKeys(nickname);
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.cssSelector("#passwordRepeat")).clear();
driver.findElement(By.cssSelector("#passwordRepeat")).sendKeys(passwordRepeat);
driver.findElement(By.cssSelector("#policy")).click();
driver.findElement(By.cssSelector("#submit")).click();
sleep(3000);
}
@Test
@Order(3)
void quit(){
driver.quit();
}
}
3、主页测试
package forum;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.chrome.ChromeDriver;
import static java.lang.Thread.sleep;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class HomePageTest {
private static ChromeDriver driver;
private static ChromeDriver getDriver() {
if (driver == null) {
driver = new ChromeDriver();
}
return driver;
}
@Test
@BeforeAll
static void start() throws InterruptedException {
driver = getDriver();
driver.get("http://39.104.54.203:58880/sign-in.html");
driver.manage().window().maximize();
sleep(2000);
}
@ParameterizedTest
@CsvSource(value = {"yueyue,yueyue3344"})
@Order(1)
void login(String username,String password){
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#username")).sendKeys(username);
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.id("submit")).click();
}
//主页UI测试
@Test
@Order(2)
void homePageUI() throws InterruptedException {
sleep(2000);
String board_title = driver.findElement(By.id("article_list_board_title")).getText();
Assertions.assertEquals(board_title,"首页");
driver.findElement(By.xpath("//*[@id=\"topBoardList\"]/li[2]/a")).click();
sleep(1000);
String board_title2 = driver.findElement(By.id("article_list_board_title")).getText();
Assertions.assertEquals(board_title2,"Java");
driver.findElement(By.xpath("//*[@id=\"topBoardList\"]/li[9]/a")).click();
sleep(1000);
String board_title3 = driver.findElement(By.id("article_list_board_title")).getText();
Assertions.assertEquals(board_title3,"测试");
// sleep(2000);
// String nickname = driver.findElement(By.id("index_nav_nickname")).getText();
// Assertions.assertEquals(nickname,"岳岳");
}
//发布帖子测试
@Test
@Order(3)
void post() throws InterruptedException {
driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[1]/div/div/div[2]/div/a[1]")).click();
sleep(3000);
String title = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[1]/div/div/div/h2")).getText();
Assertions.assertEquals(title,"发新贴");
driver.switchTo().activeElement().sendKeys("UI自动化测试正文");
driver.findElement(By.id("article_post_title")).sendKeys("UI自动化测试标题");
driver.executeScript("window.scrollTo(0,1000)");
sleep(2000);
driver.findElement(By.id("article_post_submit")).click();
//切换帖子版块至"测试"后再次测试
}
//帖子详情页展示测试
@Test
@Order(4)
void details() throws InterruptedException {
// login("yueyue","yueyue3344");
sleep(2000);
String title = driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[1]/a/strong")).getText();
String visitCount = driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[2]/div/div[2]/ul/li[1]")).getText();
int vct = Integer.parseInt(visitCount);
driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[1]/a")).click();
sleep(2000);
//重新获取详情页面帖子标题和页面中间帖子标题 判断是否与主页展示标题一致
String checktitle = driver.findElement(By.id("details_article_title")).getText();
String checktitle2 = driver.findElement(By.id("details_article_content_title")).getText();
Assertions.assertEquals(checktitle,title);
Assertions.assertEquals(checktitle2,title);
//浏览量判断
String checkVisitCount = driver.findElement(By.id("details_article_visitCount")).getText();
int cvct = Integer.parseInt(checkVisitCount);
Assertions.assertEquals(vct + 1,cvct);
//点击点赞按钮 判断是否增加
String likeCount = driver.findElement(By.id("details_article_likeCount")).getText();
int lc = Integer.parseInt(likeCount);
driver.findElement(By.id("details_btn_like_count")).click();
sleep(2000);
likeCount = driver.findElement(By.id("details_article_likeCount")).getText();
Assertions.assertEquals(lc + 1,Integer.parseInt(likeCount));
driver.findElement(By.xpath("//*[@id=\"nav_board_index\"]/a")).click();
}
//帖子修改测试
@Test
@Order(5)
void update() throws InterruptedException {
//标题删除重写 正文追加
// login("yueyue","yueyue3344");
sleep(2000);
driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[1]/a")).click();
sleep(1000);
driver.findElement(By.id("details_artile_edit")).click();
sleep(1000);
driver.findElement(By.id("edit_article_title")).clear();
driver.findElement(By.id("edit_article_title")).sendKeys("UI自动化测试标题修改");
driver.findElement(By.id("edit_article_title")).sendKeys(Keys.TAB,Keys.END);
driver.switchTo().activeElement().sendKeys("修改");
driver.executeScript("window.scrollTo(0,1000)");
sleep(2000);
driver.findElement(By.id("edit_article_submit")).click();
sleep(1000);
String title = driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[1]/a/strong")).getText();
Assertions.assertEquals(title.substring(title.length() - 2),"修改");
}
//帖子删除测试
@Test
@Order(6)
void delete() throws InterruptedException {
//通过记录删除前第一条时间 删除后用时间判断当前帖子是否删除成功
// login("yueyue","yueyue3344");
sleep(2000);
String articleCreatTime = driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[2]/div/div[1]/ul/li[2]")).getText();
driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[1]/a")).click();
sleep(1000);
driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div[1]/div[2]/div[2]/div/div[3]/div/a")).click();
sleep(1000);
driver.findElement(By.id("details_artile_delete")).click();
sleep(1000);
String cact = driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[2]/div/div[1]/ul/li[2]")).getText();
Assertions.assertNotEquals(articleCreatTime,cact);
}
@Test
@Order(7)
void quit(){
driver.quit();
}
}
4、个人中心测试
package forum;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import static java.lang.Thread.sleep;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class PersonalCenterTest {
private static ChromeDriver driver;
private static ChromeDriver getDriver() {
if (driver == null) {
driver = new ChromeDriver();
}
return driver;
}
@Test
@BeforeAll
static void start() throws InterruptedException {
driver = getDriver();
driver.get("http://39.104.54.203:58880/sign-in.html");
driver.manage().window().maximize();
sleep(2000);
}
@ParameterizedTest
@CsvSource(value = {"yueyue,yueyue3344"})
@Order(1)
void login(String username,String password){
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#username")).sendKeys(username);
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.id("submit")).click();
}
@Test
@Order(2)
void CenterUITest() throws InterruptedException {
// login("yueyue","yueyue3344");
sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/header[1]/div/div/div[3]")).click();
sleep(6000);
driver.findElement(By.id("index_user_settings")).click();
sleep(1000);
String nickname = driver.findElement(By.id("index_nav_nickname")).getText();
String cnickname = driver.findElement(By.id("settings_nickname")).getText();
Assertions.assertEquals(nickname,cnickname);
String label1 = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div/div[2]/div/h3[1]")).getText();
Assertions.assertEquals(label1,"昵称");
String label2 = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div/div[2]/div/h3[2]")).getText();
Assertions.assertEquals(label2,"邮箱地址");
String label3 = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div/div[2]/div/h3[3]")).getText();
Assertions.assertEquals(label3,"电话号码");
String label4 = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div/div[2]/div/h3[4]")).getText();
Assertions.assertEquals(label4,"修改密码");
String mlabel1 = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div/div[2]/div/div[5]/div/div/form/div[1]/label")).getText();
Assertions.assertEquals(mlabel1,"原密码");
String placeholder1 = driver.findElement(By.id("settings_input_oldPassword")).getAttribute("placeholder");
Assertions.assertEquals(placeholder1,"请输入密码");
String placeholder2 = driver.findElement(By.id("settings_input_newPassword")).getAttribute("placeholder");
Assertions.assertEquals(placeholder1,"请输入密码");
String placeholder3 = driver.findElement(By.id("settings_input_passwordRepeat")).getAttribute("placeholder");
Assertions.assertEquals(placeholder1,"请输入密码");
String mlabel2 = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div/div[2]/div/div[5]/div/div/form/div[2]/label")).getText();
Assertions.assertEquals(mlabel2,"新原密码");
String mlabel3 = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div/div[2]/div/div[5]/div/div/form/div[3]/label")).getText();
Assertions.assertEquals(mlabel3,"确认密码");
driver.executeScript("window.scrollTo(0,1000)");
sleep(1000);
String label5 = driver.findElement(By.xpath("//*[@id=\"bit-forum-content\"]/div[2]/div/div/div/div[2]/div/h3[5]")).getText();
Assertions.assertEquals(label5,"个人简介");
String placeholder4 = driver.findElement(By.id("settings_textarea_remark")).getAttribute("placeholder");
Assertions.assertEquals(placeholder4,"写点自我介绍,可以让朋友们了解你...");
}
// @Test
// @Order(3)
// void modifyAvatar(){
// 获取当前头像url
// 需要使用AutoIT工具编写脚本
// 使用AutoIT来识别Windows控件信息
// 然后在点击头像上传之后运行脚本执行windows窗口操作完成上传
// 之后点击修改头像
// 重新获取头像url
// 断言url判断头像是否已修改
// }
@Test
@Order(3)
void updateBasic() throws InterruptedException {
sleep(1000);
driver.executeScript("window.scrollTo(0,-1000)");
sleep(1000);
driver.findElement(By.id("setting_input_nickname")).clear();
driver.findElement(By.id("setting_submit_nickname")).click();
driver.findElement(By.id("setting_input_nickname")).sendKeys("UIAutoTest");
driver.findElement(By.id("setting_submit_nickname")).click();
sleep(1500);
driver.executeScript("window.scrollTo(0,1000)");
driver.findElement(By.id("setting_input_email")).clear();
driver.findElement(By.id("setting_submit_email")).click();
driver.findElement(By.id("setting_input_email")).sendKeys("UIAutoTest@yeah.net");
driver.findElement(By.id("setting_submit_email")).click();
sleep(1500);
driver.executeScript("window.scrollTo(0,1000)");
driver.findElement(By.id("setting_input_phoneNum")).clear();
driver.findElement(By.id("setting_submit_phoneNum")).click();
driver.findElement(By.id("setting_input_phoneNum")).sendKeys("18888888888");
driver.findElement(By.id("setting_submit_phoneNum")).click();
driver.executeScript("window.scrollTo(0,10000)");
sleep(1500);
driver.findElement(By.id("settings_textarea_remark")).clear();
driver.findElement(By.id("settings_submit_remark")).click();
driver.findElement(By.id("settings_textarea_remark")).sendKeys("UI自动化测试");
driver.findElement(By.id("settings_submit_remark")).click();
}
@ParameterizedTest
@CsvSource(value = {"yueyue3344,yueyue3355,yueyue3355"})
@Order(4)
void falseUpdatePassword(String oldPassword,String newPassword,String passwordRepeat) throws InterruptedException {
sleep(1500);
// 原密码、新原密码、确认密码都为空
driver.findElement(By.id("settings_input_oldPassword")).clear();
driver.findElement(By.id("settings_input_newPassword")).clear();
driver.findElement(By.id("settings_input_passwordRepeat")).clear();
driver.findElement(By.id("settings_submit_password")).click();
sleep(1500);
//原密码为空、新原密码、确认密码不为空
driver.findElement(By.id("settings_input_oldPassword")).clear();
driver.findElement(By.id("settings_input_newPassword")).clear();
driver.findElement(By.id("settings_input_newPassword")).sendKeys(newPassword);
driver.findElement(By.id("settings_input_passwordRepeat")).clear();
driver.findElement(By.id("settings_input_passwordRepeat")).sendKeys(passwordRepeat);
driver.findElement(By.id("settings_submit_password")).click();
sleep(1500);
//新原密码和确认密码不一致
driver.findElement(By.id("settings_input_oldPassword")).clear();
driver.findElement(By.id("settings_input_oldPassword")).sendKeys(oldPassword);
driver.findElement(By.id("settings_input_newPassword")).clear();
driver.findElement(By.id("settings_input_newPassword")).sendKeys(newPassword);
driver.findElement(By.id("settings_input_passwordRepeat")).clear();
driver.findElement(By.id("settings_input_passwordRepeat")).sendKeys(passwordRepeat + "123");
driver.findElement(By.id("settings_submit_password")).click();
sleep(1500);
driver.findElement(By.id("settings_input_oldPassword")).clear();
driver.findElement(By.id("settings_input_newPassword")).clear();
driver.findElement(By.id("settings_input_passwordRepeat")).clear();
}
@ParameterizedTest
@CsvSource(value = {"yueyue3344,yueyue3355,yueyue3355"})
@Order(5)
void rightUpdatePassword(String oldPassword,String newPassword,String passwordRepeat) throws InterruptedException {
sleep(1000);
driver.findElement(By.id("settings_input_oldPassword")).clear();
driver.findElement(By.id("settings_input_oldPassword")).sendKeys(oldPassword);
driver.findElement(By.id("settings_input_newPassword")).clear();
driver.findElement(By.id("settings_input_newPassword")).sendKeys(newPassword);
driver.findElement(By.id("settings_input_passwordRepeat")).clear();
driver.findElement(By.id("settings_input_passwordRepeat")).sendKeys(passwordRepeat);
sleep(1500);
driver.findElement(By.id("settings_submit_password")).click();
}
@Test
@Order(6)
void checkUpdate() throws InterruptedException {
sleep(1500);
login("yueyue","yueyue3355");
sleep(1500);
driver.findElement(By.xpath("/html/body/div[1]/header[1]/div/div/div[3]")).click();
sleep(5000);
driver.findElement(By.id("index_user_settings")).click();
sleep(1000);
String nickname = driver.findElement(By.id("index_nav_nickname")).getText();
String cnickname = driver.findElement(By.id("settings_nickname")).getText();
Assertions.assertEquals(nickname,cnickname);
driver.executeScript("window.scrollTo(0,1000)");
rightUpdatePassword("yueyue3355","yueyue3344","yueyue3344");
sleep(1000);
driver.quit();
}
}
5、站内信测试
package forum;
import javafx.scene.control.Alert;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.chrome.ChromeDriver;
import static java.lang.Thread.sleep;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MailTest {
private static ChromeDriver driver;
private static ChromeDriver getDriver() {
if (driver == null) {
driver = new ChromeDriver();
//隐式等待
// driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
}
return driver;
}
@Test
@BeforeAll
static void start() throws InterruptedException {
driver = getDriver();
driver.get("http://39.104.54.203:58880/sign-in.html");
driver.manage().window().maximize();
sleep(2000);
}
@ParameterizedTest
@CsvSource(value = {"weizi,123456"})
@Order(1)
void login(String username,String password){
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#username")).sendKeys(username);
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.id("submit")).click();
}
//点击给自己发送 发送失败
@ParameterizedTest
@ValueSource(strings = "UI自动化测试站内信")
@Order(2)
void sendForMe(String mail) throws InterruptedException {
sleep(2000);
driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[1]/div/div[2]/div[1]/a")).click();
sleep(1000);
driver.findElement(By.id("btn_details_send_message")).click();
sleep(1000);
driver.findElement(By.id("index_message_receive_cancel")).click();
sleep(1000);
driver.findElement(By.id("btn_details_send_message")).click();
sleep(1000);
driver.findElement(By.id("index_message_receive_content")).clear();
driver.findElement(By.id("btn_index_send_message")).click();
sleep(1000);
driver.findElement(By.id("btn_details_send_message")).click();
sleep(1000);
driver.findElement(By.id("index_message_receive_content")).clear();
driver.findElement(By.id("index_message_receive_content")).sendKeys(mail);
driver.findElement(By.id("btn_index_send_message")).click();
driver.findElement(By.xpath("//*[@id=\"nav_board_index\"]/a")).click();
sleep(1000);
// driver.navigate().back();
}
//点击给其他人发送 以未读消息出现为成功 切换用户登录
@ParameterizedTest
@ValueSource(strings = "UI自动化测试站内信")
@Order(3)
void sendForOther(String mail) throws InterruptedException {
// login("weizi","123456");
// sleep(2000);
driver.findElement(By.xpath("//*[@id=\"artical-items-body\"]/div[2]/div/div[2]/div[1]/a")).click();
sleep(1000);
driver.findElement(By.id("btn_details_send_message")).click();
sleep(1000);
driver.findElement(By.id("index_message_receive_cancel")).click();
sleep(1000);
driver.findElement(By.id("btn_details_send_message")).click();
sleep(1000);
driver.findElement(By.id("index_message_receive_content")).clear();
driver.findElement(By.id("btn_index_send_message")).click();
sleep(1000);
driver.findElement(By.id("btn_details_send_message")).click();
sleep(1000);
driver.findElement(By.id("index_message_receive_content")).clear();
driver.findElement(By.id("index_message_receive_content")).sendKeys(mail);
driver.findElement(By.id("btn_index_send_message")).click();
driver.findElement(By.xpath("//*[@id=\"nav_board_index\"]/a")).click();
sleep(1000);
driver.navigate().back();
}
@ParameterizedTest
@CsvSource(value = {"yueyue,yueyue3344"})
@Order(4)
void checkUnRead(String username,String password) throws InterruptedException {
login(username,password);
sleep(3000);
driver.findElement(By.xpath("/html/body/div[1]/header[1]/div/div/div[2]/div/a")).click();
sleep(1000);
String state = driver.findElement(By.xpath("//*[@id=\"index_div_message_list\"]/div[1]/div/div[2]/a/span[1]")).getText();
Assertions.assertEquals(state,"[未读]");
}
//点击未读消息 判断是否转变为已读
@Test
@Order(5)
void checkRead() throws InterruptedException {
// checkUnRead("yueyue","yueyue3344");
// sleep(2000);
driver.findElement(By.xpath("//*[@id=\"index_div_message_list\"]/div[1]/div/div[2]/a")).click();
sleep(1000);
driver.findElement(By.id("index_message_reply_cancel")).click();
sleep(500);
String state = driver.findElement(By.xpath("//*[@id=\"index_div_message_list\"]/div[1]/div/div[2]/a/span[1]")).getText();
Assertions.assertEquals(state,"[已读]");
}
//回复消息后 判断是否变为已回复 同时接收方出现未读消息
@ParameterizedTest
@CsvSource(value = {"weizi,123456,UI自动化测试回复"})
@Order(6)
void checkReplied(String username,String password,String mail) throws InterruptedException {
driver.findElement(By.xpath("//*[@id=\"index_div_message_list\"]/div[1]/div/div[2]/a")).click();
sleep(1000);
driver.findElement(By.id("btn_index_message_reply")).click();
sleep(1000);
driver.findElement(By.id("index_message_reply_receive_content")).clear();
driver.findElement(By.id("index_message_reply_receive_content")).sendKeys(mail);
sleep(1000);
driver.findElement(By.id("btn_index_send_message_reply")).click();
sleep(1000);
driver.findElement(By.xpath("//*[@id=\"index_message_offcanvasEnd\"]/div[1]/button")).click();
driver.navigate().back();
checkUnRead(username,password);
sleep(1000);
driver.quit();
}
}
6、注销测试
package forum;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import static java.lang.Thread.sleep;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class LogoutTest {
private static ChromeDriver driver;
private static ChromeDriver getDriver() {
if (driver == null) {
driver = new ChromeDriver();
//隐式等待
// driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
}
return driver;
}
@Test
@BeforeAll
static void start() throws InterruptedException {
driver = getDriver();
driver.get("http://39.104.54.203:58880/sign-in.html");
driver.manage().window().maximize();
sleep(2000);
}
@ParameterizedTest
@CsvSource(value = {"yueyue,yueyue3344"})
@Order(1)
void login(String username,String password){
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#username")).sendKeys(username);
driver.findElement(By.cssSelector("#password")).clear();
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.id("submit")).click();
}
@Test
@Order(2)
void logout() throws InterruptedException {
sleep(1000);
driver.findElement(By.xpath("/html/body/div[1]/header[1]/div/div/div[3]")).click();
sleep(1000);
driver.findElement(By.id("index_user_logout")).click();
sleep(1000);
}
@Test
@Order(3)
void quit(){
driver.quit();
}
}