基于SpringBoot的高并发论坛系统测试报告

目录

前言

一、项目概述

二、设计测试用例

总览

1、界面测试用例设计

2、注册登录测试用例设计 

 3、主页模块设计测试用例

 4、个人中心模块测试用例

5、站内信模块测试用例

6、易用性测试用例

​编辑 

7、安全性测试用例

​编辑 

8、兼容性测试用例

​编辑 9、性能测试用例

三、自动化测试代码

 1、登录注册

2、注册测试

3、主页测试

4、个人中心测试

5、站内信测试

6、注销测试


前言

针对项目需求编写测试用例,对项目进行测试用例的编写和通过Selenium和IUnit单元测试框架,来对项目功能进行自动化测试

一、项目概述

本项目是一个基于 SpringBootMyBatisMySQL 构建的在线论坛平台,旨在为用户提供一个便捷、高效的交流平台。平台具备用户注册、登录,退出等基本功能,并支持文章的发布、删除、更新等高级功能。采用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();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值