【项目】乐响云端测试报告

一.项目背景

  1. 本平台基于 SSM 框架打造。该系统为用户提供了一个便捷的听音乐平台。平台具备美观且响应式的页面设计,在各种功能上都能提供方便的体验:用户可以轻松登录或注册,自由添加或删除歌曲。通过 SSM 框架的整合,系统运行稳定,性能优越,数据处理高效,为用户打造了一个功能较为齐全、操作简便的在线音乐播放器平台。
  2. 但是该项目在设计时有以下几个问题:
  • 没有未登录状态;
  • 没有用户注销功能;
  • 上传音乐文件时,非mp3格式的文件也能上传,但是上传之后删不掉,必须去数据库才能删除这种异常文件。

  

二.项目功能

该乐响云端网页应用主要实现了以下几个功能:注册、登录、找回密码,播放歌曲,查询歌曲,上传歌曲,喜欢歌曲,删除歌曲,评论歌曲等功能。


注册功能:通过注册页面,进行不同身份的注册;用户使用邮箱、密码、进行注册。账号已经存在的,注册失败;账号不存在的,用户直接注册成功。
登录功能:账号以及密码已经在注册时写入了数据库,即:用户名以及密码是已经存在的,登录成功后就会跳转到对应的身份的列表页面。用户登录成功后,如果还未上传歌曲,在页面中间会存在查询,喜欢列表,上传歌曲,删除选中这四个按钮,如果已经上传歌曲,那么就还有播放歌曲、播放评论,删除、喜欢、评论这五个按钮。
找回密码功能:用户通过邮箱接收验证码的方式来找回密码。
播放歌曲功能:用户在音乐列表界面点击“播放音乐”按钮,此时音乐自动播放,有声音。
播放评论功能:用户在音乐列表界面点击“播放评论”按钮,此时评论会以弹幕形式出现在界面。
查询歌曲功能:用户在音乐列表页面和喜欢音乐页面查询框输入歌曲名,如果歌曲名清晰,会显示此歌曲;如果歌曲名模糊,则会显示所有相关的歌曲。
上传歌曲功能:用户点击音乐列表界面点击“上传歌曲”按钮,可进行上传歌曲操作。但是对上传文件的格式却没有限制。
喜欢歌曲功能:用户点击音乐列表界面点击“喜欢”按钮,如果歌曲已喜欢,则会有弹窗提示:歌曲已经收藏过了,无需再收藏~;如果歌曲未喜欢,则会有弹窗提示:收藏成功~。

取消喜欢功能:用户点击音乐列表的“喜欢列表”,跳转到喜欢音乐的页面后,如果有喜欢的歌曲,则会出现“取消喜欢”,点击即可取消喜欢。
删除歌曲功能:用户点击音乐列表界面点击“删除”按钮,若删除成功,则会有弹窗提示:删除成功;但是对于异常文件(非mp3格式)则会弹窗提示:该音乐不存在,删除失败~。

三.功能测试 

 1)测试用例

功能测试结果:测试用例98%通过

2)自动化测试 

自动化测试覆盖模块:登录页面、注册页面、找回密码页面、音乐列表页面、喜欢音乐页面。

自动化代码示例:

1.commen包

import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.Properties;

public class Utils {
    public static WebDriver driver;

    public static WebDriver createDriver(){
        if(driver==null){
            //驱动程序管理的⾃动化
            WebDriverManager.edgedriver().setup();
            EdgeOptions options=new EdgeOptions();

            //允许访问所有连接
            options.addArguments("--remote-allow-origins=*");

            driver=new EdgeDriver(options);
            //等待
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
        }
        return driver;
    }

    public Utils(String url){
        driver=createDriver();
        driver.get(url);
    }

    public void getScreenShot(String str) throws IOException {
        SimpleDateFormat sim1=new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sim2=new SimpleDateFormat("HHmmSS");

        String dirTime=sim1.format(System.currentTimeMillis());
        String fileTime=sim2.format(System.currentTimeMillis());

        String filename="./src/test/image/"+dirTime+"/"+str+"-"+fileTime+".png";

        File srcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

        //srcFile放到指定位置
        FileUtils.copyFile(srcFile,new File(filename));

    }

    public void AlertProcess(){
        //使用显式等待来确保弹窗确实存在
        WebDriverWait wait = new WebDriverWait(driver, 30);
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());
        alert.accept();
    }


    public String extractVerificationCode() {
        String host = "imap.qq.com"; // 邮件服务器地址
        final String username = "3584375358@qq.com"; // 发件邮箱地址
        final String password = "ukmhbumlpzyhdbbi"; // 邮箱密码

        Properties properties = new Properties();
        properties.put("mail.store.protocol", "imaps");
        properties.put("mail.imap.host", host);
        properties.put("mail.imap.port", "993");

        Session emailSession = Session.getDefaultInstance(properties);

        try {
            Store store = emailSession.getStore("imaps");
            store.connect(host, username, password);

            Folder emailFolder = store.getFolder("INBOX");
            emailFolder.open(Folder.READ_ONLY);

            Message[] messages = emailFolder.getMessages();
            if (messages.length > 0) {
                Message latestMessage = messages[messages.length - 1];
                String content = latestMessage.getContent().toString();

                // 提取验证码(假设验证码是一个6位数字)
                // 使用正则表达式或其他方法从邮件内容中提取验证码
                // 例如,如果验证码是一个6位数字,可以使用以下正则表达式
                java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\b\\d{6}\\b");
                java.util.regex.Matcher matcher = pattern.matcher(content);

                if (matcher.find()) {
                    return matcher.group();
                }
            }
            emailFolder.close(false);
            store.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

2.tests包

(1) LoginPage(登录页面)

package tests;

import commen.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.IOException;

public class LoginPage extends Utils {
    public static String url="http://127.0.0.1:8089/login.html";
    public LoginPage(){
        super(url);
    }

    /*
        页面可以正常打开
     */
    public void LoginPageRight() throws InterruptedException, IOException {
        //能找到登录按钮
        driver.findElement(By.cssSelector("#submit"));
        //正常打开登录页面截图
        //getScreenShot(getClass().getName());

    }


    private void Clear(){
        driver.findElement(By.cssSelector("#user")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
    }

    /*
        登陆成功
     */
    public void LoginSuccess() throws InterruptedException, IOException {
        //正确的账号和密码
        //1.先清空账号和密码栏
        Clear();

        //2.输入正确的账号和密码
        driver.findElement(By.cssSelector("#user")).sendKeys("1368129946");
        driver.findElement(By.cssSelector("#password")).sendKeys("12345679");
        driver.findElement(By.cssSelector("#submit")).click();

        //3.处理弹窗
        AlertProcess();

        Thread.sleep(1000);

        //4.登陆成功截图---跳转音乐列表页面
        getScreenShot(getClass().getName());

//        driver.quit();

    }


    /*
        登录失败
     */
    public void LoginFail() throws InterruptedException {
        //1.账号或密码为空
        //账号为空
        driver.findElement(By.cssSelector("#user")).sendKeys("");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456..");
        driver.findElement(By.cssSelector("#submit")).click();
        //处理弹窗
        AlertProcess();

        Thread.sleep(2000);

        //清空账号和密码栏
        Clear();

        //密码为空
        driver.findElement(By.cssSelector("#user")).sendKeys("1406805084");
        driver.findElement(By.cssSelector("#password")).sendKeys("");
        driver.findElement(By.cssSelector("#submit")).click();
        //处理弹窗
        AlertProcess();

        Thread.sleep(2000);

        Clear();
        //2.账号和密码都不为空
        //账号错误
        driver.findElement(By.cssSelector("#user")).sendKeys("1406805088");
        driver.findElement(By.cssSelector("#password")).sendKeys("test123456..");
        driver.findElement(By.cssSelector("#submit")).click();

        String text=driver.findElement(By.cssSelector("#message")).getText();
        assert text.equals("登录失败,用户不存在!");

        Thread.sleep(2000);

        Clear();
        //账号和密码均错误
        driver.findElement(By.cssSelector("#user")).sendKeys("1406805088");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456..");
        driver.findElement(By.cssSelector("#submit")).click();

        String text2=driver.findElement(By.cssSelector("#message")).getText();
        assert text2.equals("登录失败,用户不存在!");

        Thread.sleep(2000);

        Clear();
        //密码错误
        driver.findElement(By.cssSelector("#user")).sendKeys("1406805084");
        driver.findElement(By.cssSelector("#password")).sendKeys("test123456");
        driver.findElement(By.cssSelector("#submit")).click();
        String text3=driver.findElement(By.cssSelector("#message")).getText();
        assert text2.equals("登录失败,账号或密码错误!");
    }
}

(2) ListPage(音乐列表页面)

package tests;

import commen.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.IOException;

public class ListPage extends Utils {
    public static String url="http://127.0.0.1:8089/list.html";
    public ListPage(){
        super(url);
    }

    /*
        登录状态下查询功能测试
     */
    public void  Query() throws InterruptedException, IOException {
        //1.页面可以正常打开
        //能找到查询按钮
        driver.findElement(By.cssSelector("#submit1"));
        //歌曲列表表头
        driver.findElement(By.cssSelector("#body > div.container > table > tbody:nth-child(1) > tr"));

        //2.查询功能
        //正常查询---曲库中有被查询歌曲
        //(1)歌曲名清晰
        driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("那些你很冒险的梦");
        driver.findElement(By.cssSelector("#submit1")).click();
        String text=driver.findElement(By.cssSelector("#info > tr > td:nth-child(2)")).getText();
        assert text.equals("那些你很冒险的梦");
        Thread.sleep(2000);

        //(2)歌曲名模糊
        driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("刀");
        driver.findElement(By.cssSelector("#submit1")).click();
        //截图显示所有查询到的相关歌曲
        getScreenShot(getClass().getName());

        Thread.sleep(2000);

        //3.异常查询--什么都不输入/输入空格--此用例不通过
        //什么都不输入
        //输入空格--弹窗内容应为:关键字为空的搜索结果
        driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys(" ");
        driver.findElement(By.cssSelector("#submit1")).click();
        WebDriverWait wait = new WebDriverWait(driver, 10);
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());
        String atext=alert.getText();
        assert atext.equals("关键字为空的搜索结果");
        //实际上是:在音乐库当中没有找到您要找的歌曲~
        alert.accept();

    }

    /*
        喜欢音乐列表
     */
    public void LoveList(){
        //点击喜欢列表
        driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a:nth-child(1)")).click();
        //跳转到喜欢列表页面----能找到回到首页按钮
        driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a"));
        driver.quit();
    }

    /*
        上传歌曲
     */
    public void  UploadSong() throws IOException, InterruptedException {
        driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > button")).click();
        getScreenShot(getClass().getName());

        Thread.sleep(3000);

        driver.quit();
    }

    /*
        删除选中
     */

    public void Delete(){
        driver.findElement(By.id("3")).click();
        driver.findElement(By.cssSelector("#delete")).click();

        WebDriverWait wait = new WebDriverWait(driver, 10);
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());
        String atext=alert.getText();
        assert atext.equals("音乐删除成功");

//        driver.quit();
    }

    /*
      歌曲列功能测试
     */

    public void Song() throws InterruptedException, IOException {
        //播放歌曲
        driver.findElement(By.cssSelector("#info > tr > td:nth-child(4) > button:nth-child(1)")).click();
        getScreenShot(getClass().getName());
        Thread.sleep(3000);
        driver.quit();

        //播放评论

    }

    /*
        操作列功能测试
     */

    public void Operation() throws InterruptedException {
        //删除
        //1.是当前用户上传的歌曲
        driver.findElement(By.cssSelector("#info > tr:nth-child(3) > td:nth-child(5) > button:nth-child(1)")).click();

        WebDriverWait wait = new WebDriverWait(driver, 20);
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());
        String text=alert.getText();
        assert text.equals("删除成功");
        alert.accept();


        //2.不是当前用户上传的歌曲
        driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(1)")).click();

        Alert alert2 = wait.until(ExpectedConditions.alertIsPresent());
        String text2=alert.getText();
        assert text2.equals("该音乐只能由上传者进行删除,您无权删除");
        alert.accept();



        //喜欢
        driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(2)")).click();
        Alert alert3 = wait.until(ExpectedConditions.alertIsPresent());
        String text3=alert.getText();
        assert text3.equals("收藏成功~");
        alert.accept();



        //评论
        driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(3)")).click();
        driver.findElement(By.cssSelector("#commente")).sendKeys("真好听~");
        driver.findElement(By.cssSelector("#sendComment")).click();
        Alert alert4 = wait.until(ExpectedConditions.alertIsPresent());
        String text4=alert.getText();
        assert text4.equals("评论成功~");
        alert.accept();

        driver.quit();
    }
}

 (3)LoveMusicPage(喜欢音乐页面)

package tests;

import commen.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.IOException;

/*
    登录状态下
 */
public class LoveMusicPage extends Utils {
    public static String url="http://127.0.0.1:8089/loveMusic.html";
    public LoveMusicPage(){
        super(url);
    }

    public void LoginByLoveMusic() throws IOException {
        //1.页面可以正常打开---能找到回到首页按钮
        driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a"));

        //2.可以对喜欢音乐列表进行操作
        //播放歌曲操作---截图看音乐播放框Playing是否一致
        getScreenShot(getClass().getName());
        driver.findElement(By.cssSelector("#info > tr > td:nth-child(3) > button")).click();
        getScreenShot(getClass().getName());

        //取消喜欢操作---弹窗提示:取消成功~
        driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(4) > button")).click();
        WebDriverWait wait = new WebDriverWait(driver, 10);
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());

        String text=alert.getText();
        assert text.equals("取消成功~");

        alert.accept();

    }


}

(4)RegisterPage(注册页面)

package tests;

import commen.Utils;
import org.checkerframework.checker.units.qual.A;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class RegisterPage extends Utils {
    public static String registerurl="http://127.0.0.1:8089/register.html";
    public static String loginurl="http://127.0.0.1:8089/login.html";

    public RegisterPage(){
        super(registerurl);
    }

    public void RegisterRightPage(){
        //1.从登录页面打开--点击注册,跳转后能找到注册按钮
        driver.findElement(By.cssSelector("#body > div.container > a:nth-child(4)")).click();
        driver.findElement(By.cssSelector("#submit"));

        //2.从连接打开
        driver.findElement(By.cssSelector("#submit"));

        //3.可以回到登录页面--点击 已有账号?去登录 跳转回登录页面
        driver.findElement(By.cssSelector("#body > div.container > a")).click();
        driver.findElement(By.cssSelector("#body > div.container > h3"));
    }

    public void RegisterSuccess() throws InterruptedException {

        //输入邮箱
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375358@qq.com");
        //密码
        driver.findElement(By.cssSelector("#password1")).sendKeys("12345678");
        //确认密码
        driver.findElement(By.cssSelector("#password2")).sendKeys("12345678");
        //发送验证码
        driver.findElement(By.cssSelector("#sendCode")).click();

        AlertProcess();

        String emailcode=extractVerificationCode();

        //得到并输入验证码
        driver.findElement(By.cssSelector("#emailCode")).sendKeys(emailcode);

        driver.findElement(By.cssSelector("#submit")).click();

        AlertProcess();

//        driver.quit();

    }



    public void RegisterFailByPassword() throws InterruptedException {
        //密码
        //1.密码长度不一致
        //输入邮箱
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375358@qq.com");
        //密码
        driver.findElement(By.cssSelector("#password1")).sendKeys("12345678");
        //确认密码
        driver.findElement(By.cssSelector("#password2")).sendKeys("123456789");
        //发送验证码
        driver.findElement(By.cssSelector("#sendCode")).click();

        AlertProcess();

//        //得到并输入验证码
        String emailcode=extractVerificationCode();
        driver.findElement(By.cssSelector("#emailCode")).sendKeys(emailcode);

        driver.findElement(By.cssSelector("#submit")).click();

        WebDriverWait wait = new WebDriverWait(driver, 20);
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());
        String text=alert.getText();
        assert text.equals("两次密码长度不一致,请重新输入~");
        alert.accept();

        //2.长度一致,内容不一致
        driver.findElement(By.cssSelector("#password2")).clear();
        driver.findElement(By.cssSelector("#password2")).sendKeys("12345679");

        driver.findElement(By.cssSelector("#submit")).click();

        String text2=driver.findElement(By.cssSelector("#message")).getText();
        assert text2.equals("登录密码和确认密码不一致,请核对后重新输入~");

//        driver.quit();

    }

    public void RegisterFailByEmail() throws InterruptedException {
        //邮箱
        //1.邮箱错误
        //输入邮箱
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375357@qq.com");
        //密码
        driver.findElement(By.cssSelector("#password1")).sendKeys("12345678");
        //确认密码
        driver.findElement(By.cssSelector("#password2")).sendKeys("12345678");
        //发送验证码
        driver.findElement(By.cssSelector("#sendCode")).click();
        AlertProcess();


        driver.findElement(By.cssSelector("#submit")).click();

        Alert alert2 = driver.switchTo().alert();
        String text3=alert2.getText();
//        assert text3.equals("验证码发送失败,请核对邮箱正确性重新发送~");//应该是这句,但是会有个新的弹窗覆盖此弹窗
        assert text3.equals("请输入验证码");

        alert2.accept();



        //2.已注册
        driver.findElement(By.cssSelector("#email")).clear();
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375358@qq.com");

        String emailcode3=extractVerificationCode();
        driver.findElement(By.cssSelector("#emailCode")).sendKeys(emailcode3);

        driver.findElement(By.cssSelector("#submit")).click();

        String text4=driver.findElement(By.cssSelector("#message")).getText();
//        assert text4.equals("该邮箱不可以同时绑定多个账号,请换个邮箱再来注册~");//手动测试有,自动化测试并未出现这句
        assert text4.equals("您未使用当前邮箱发送验证码~");

        driver.quit();

    }


    public void RegisterFailByCode() throws InterruptedException {
        //输入邮箱
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375358@qq.com");
        //密码
        driver.findElement(By.cssSelector("#password1")).sendKeys("12345678");
        //确认密码
        driver.findElement(By.cssSelector("#password2")).sendKeys("12345678");

        //验证码
        //1.未发送
        driver.findElement(By.cssSelector("#submit")).click();
        WebDriverWait wait = new WebDriverWait(driver, 20);
        Alert alert2= wait.until(ExpectedConditions.alertIsPresent());
        String text5=alert2.getText();
        assert text5.equals("请输入验证码");
        alert2.accept();

        //2.120秒内重复发送
        driver.findElement(By.cssSelector("#sendCode")).click();
        AlertProcess();
        driver.findElement(By.cssSelector("#sendCode")).click();
        AlertProcess();
//        Alert alert3= wait.until(ExpectedConditions.alertIsPresent());
//        String text6=alert3.getText();
//        assert alert3.equals("您已经发送过验证码了,不可重复发送~");
//        alert3.accept();


        //3输入错误
        driver.findElement(By.cssSelector("#emailCode")).sendKeys("999999");
        driver.findElement(By.cssSelector("#submit")).click();
        String text7=driver.findElement(By.cssSelector("#message")).getText();
        assert text7.equals("验证码输入有误,请重新输入~");

        //4.过期
        driver.findElement(By.cssSelector("#emailCode")).clear();
        driver.findElement(By.cssSelector("#sendCode")).click();

        AlertProcess();

        String emailcode4=extractVerificationCode();
        driver.findElement(By.cssSelector("#emailCode")).sendKeys(emailcode4);

        Thread.sleep(120000);//等待120秒
        driver.findElement(By.cssSelector("#submit")).click();

        String text8=driver.findElement(By.cssSelector("#message")).getText();
        assert text8.equals("验证码已过期,请重新发送~");


        driver.quit();

    }

}

(5)RetPasswordPage(找回密码页面)

package tests;

import commen.Utils;
import org.checkerframework.checker.units.qual.A;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.IOException;

public class RetPasswordPage extends Utils {
    public static String retpasswordurl="http://127.0.0.1:8089/retpassword.html";
    public static String loginurl="http://127.0.0.1:8089/retpassword.html";

    public RetPasswordPage(){
        super(retpasswordurl);
//        super(loginurl);
    }

    public void RetPasswordRightPage() throws IOException {
        //1.从登录页面打开--点击 忘记密码?点击找回
        driver.findElement(By.cssSelector("#body > div.container > a:nth-child(6)")).click();
        getScreenShot(getClass().getName());

        //2.从连接打开
        getScreenShot(getClass().getName());

        //3.可以跳转回到注册页面和登录页面
        driver.findElement(By.cssSelector("#body > div.container > a:nth-child(6)")).click();
        getScreenShot(getClass().getName());

        driver.navigate().back();

        driver.findElement(By.cssSelector("#body > div.container > a:nth-child(8)")).click();
        getScreenShot(getClass().getName());

    }

    public void RetPasswordSuccess(){
        //邮箱正确,密码一致,验证码正确

        //输入邮箱
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375358@qq.com");
        //重置密码
        driver.findElement(By.cssSelector("#passwordA")).sendKeys("12345679");
        //确认密码
        driver.findElement(By.cssSelector("#passwordB")).sendKeys("12345679");
        //发送验证码
        driver.findElement(By.cssSelector("#sendCode")).click();

        AlertProcess();

        String emailcode=extractVerificationCode();
        //得到并输入验证码
        driver.findElement(By.cssSelector("#emailCode")).sendKeys(emailcode);

        driver.findElement(By.cssSelector("#submit")).click();

//        AlertProcess();
        WebDriverWait wait = new WebDriverWait(driver, 20);
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());
        String text=alert.getText();
        assert text.equals("密码修改成功~");
        alert.accept();

//        driver.quit();

    }

    public void RetPasswordFailByEmail() throws IOException, InterruptedException {
        //邮箱错误
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375357@qq.com");
        //重置密码
        driver.findElement(By.cssSelector("#passwordA")).sendKeys("12345679");
        //确认密码
        driver.findElement(By.cssSelector("#passwordB")).sendKeys("12345679");
        //发送验证码
        driver.findElement(By.cssSelector("#sendCode")).click();


        Thread.sleep(1000);

        String text=driver.findElement(By.cssSelector("#message")).getText();
        assert text.equals("验证码发送失败,请核对邮箱正确性重新发送~");

//        driver.quit();
    }

    public void RetPasswordFailByPassword() throws InterruptedException {
        //邮箱
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375358@qq.com");
        //重置密码
        driver.findElement(By.cssSelector("#passwordA")).sendKeys("12345678");
        //确认密码
        driver.findElement(By.cssSelector("#passwordB")).sendKeys("12345679");
        //发送验证码
        driver.findElement(By.cssSelector("#sendCode")).click();

        AlertProcess();

        String emailcode=extractVerificationCode();
        //得到并输入验证码
        driver.findElement(By.cssSelector("#emailCode")).sendKeys(emailcode);

        Thread.sleep(2000);

        driver.findElement(By.cssSelector("#submit")).click();

        Thread.sleep(2000);

//        登录密码和确认密码不一致,请核对后重新输入~
        String text=driver.findElement(By.cssSelector("#message")).getText();
        assert text.equals("登录密码和确认密码不一致,请核对后重新输入~");

    }

    public void RetPasswordFailByCode() throws InterruptedException {
        //1.验证码未发送
        //邮箱
        driver.findElement(By.cssSelector("#email")).sendKeys("3584375358@qq.com");
        //重置密码
        driver.findElement(By.cssSelector("#passwordA")).sendKeys("12345678");
        //确认密码
        driver.findElement(By.cssSelector("#passwordB")).sendKeys("12345678");
        //发送验证码
        driver.findElement(By.cssSelector("#sendCode")).click();

        AlertProcess();

        driver.findElement(By.cssSelector("#submit")).click();

        Alert alert= driver.switchTo().alert();
        String text=alert.getText();
        assert text.equals("请输入验证码~");
        alert.accept();



//        //2.120秒内重复发送
//        driver.findElement(By.cssSelector("#sendCode")).click();
//        AlertProcess();
//        driver.findElement(By.cssSelector("#sendCode")).click();
//        AlertProcess();
//
//        Thread.sleep(3000);
//
//        String text2=driver.findElement(By.cssSelector("#message")).getText();
//        assert text2.equals("您已经发送过验证码了,不可重复发送~");

        //3输入错误
        driver.findElement(By.cssSelector("#emailCode")).sendKeys("999999");
        driver.findElement(By.cssSelector("#submit")).click();
        String text7=driver.findElement(By.cssSelector("#message")).getText();
        assert text7.equals("验证码输入有误,请重新输入~");

        //4.过期
        driver.findElement(By.cssSelector("#emailCode")).clear();
        driver.findElement(By.cssSelector("#sendCode")).click();

        AlertProcess();

        String emailcode4=extractVerificationCode();
        driver.findElement(By.cssSelector("#emailCode")).sendKeys(emailcode4);

        Thread.sleep(120000);//等待120秒
        driver.findElement(By.cssSelector("#submit")).click();

        String text8=driver.findElement(By.cssSelector("#message")).getText();
        assert text8.equals("验证码已过期,请重新发送~");

        driver.quit();


    }
}

 自动化测试用例数量:50

 自动化测试结果:pass:58/60,fail:2/60

 自动化测试问题是否已经修复:

四.遗留风险

系统主功能基本没有问题,可能仍有细节未照顾到。

五.测试结果评估 

 主功能测试通过,项目可以上线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值