【售货系统的Web测试】

商店售货系统Web测试

项目的功能:

  1. 管理员的注册与登录功能

  2. 商品的上架、更新以及商品浏览功能

  3. 顾客的购买业务

  4. 浏览订单的功能和订单项的处理

针对这些功能 设计测试用例

在这里插入图片描述

公共类

这个类中存放驱动对象、验证参数合法性的数据、提供截图的功能

package com.djl.autotest_item.comment;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

public class CommonDriver {
    //创建驱动对象并返回
    private static ChromeDriver driver;

    public static ChromeDriver getDriver(){
        if(driver == null){
            driver = new ChromeDriver();
            //添加隐式等待
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        }
        return driver;
    }

    public static void 上架空格语句(){
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys(" ");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys(" ");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[3]/input")).sendKeys(" ");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[4]/input")).sendKeys(" ");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[5]/input")).sendKeys(" ");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[6]/input")).sendKeys(" ");
    }


    /**
     * 只有库存 价格 折扣 是必须是数字的,其他字段都是String类型
     * 并且库存 折扣 是整数  价格 可以是 小数
     */
    public static void 上架商品各字段的合法性(){
        String[] kucun = {"汉字","10.9","0","josia","-10"};
        String[] jiage = {"汉字","josia","j+","*()"};
        String[] zhekou = {"汉字","10.9","josia","10%"};
        ThreadLocalRandom random = ThreadLocalRandom.current();
        //库存
        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys(kucun[random.nextInt(0,5)]);
        //价格
        driver.findElement(By.xpath("/html/body/div[2]/form/div[5]/input")).sendKeys(jiage[random.nextInt(0,4)]);
        //折扣
        driver.findElement(By.xpath("/html/body/div[2]/form/div[6]/input")).sendKeys(zhekou[random.nextInt(0,4)]);

    }


    /**
     * 获取屏幕截图
     *
     */
    public void getScr(String str) throws IOException {
        List<String> times = getTime();
        String fileName = "./src/test/auto-"+times.get(1) + File.separator + str + "-" + times.get(0) + ".png";
        File srcFile = driver.getScreenshotAs(OutputType.FILE);
        //把屏幕截图放在指定路径下
        FileUtils.copyFile(srcFile,new File(fileName));
    }

    private List<String> getTime() {
        //文件名格式20220821-时分秒+毫秒
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyyMMdd-HHmmssSS");
        //文件夹 名称 格式2022-0801
        SimpleDateFormat sim2 = new SimpleDateFormat("yyyy-MM-dd");

        String fileName = sim1.format(System.currentTimeMillis());
        String dirName = sim2.format(System.currentTimeMillis());
        List<String> list = new ArrayList<>();
        list.add(fileName); // 0是文件名
        list.add(dirName);  //1 是 文件夹名称
        return list;
    }

}

首页的Web测试

根据设计好的测试用例来进行测试

为了保证自动化运行的顺序,使用@TestMethodOrder(MethodOrderer.OrderAnnotation.class) 注解和@Order()进行顺序的控制

package com.djl.autotest_item.Test;

import com.djl.autotest_item.comment.CommonDriver;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;


@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class IndexTest extends CommonDriver {
    private static ChromeDriver driver = getDriver();

    /**
     * 在每次执行方法之前,都先跳到首页
     */
    @BeforeAll
    static void getUrl(){
        driver.get("http://127.0.0.1:8080/index.html");
    }

    /**
     * 检验首页是否正确展示
     */
    @Test
    @Order(1)
    void checkIndex1() throws Exception{
        String center = driver.findElement(By.xpath("/html/body/div[2]/div[1]")).getText();
        String title = driver.findElement(By.xpath("/html/body/div[1]/h1")).getText();
        String zhuce = driver.findElement(By.xpath("/html/body/div[1]/a[1]")).getText();
        String denglu = driver.findElement(By.xpath("/html/body/div[1]/a[2]")).getText();
        String shangjia = driver.findElement(By.xpath("/html/body/div[1]/a[3]")).getText();
        String liulangoods = driver.findElement(By.xpath("/html/body/div[1]/a[4]")).getText();
        String gengxin = driver.findElement(By.xpath("/html/body/div[1]/a[5]")).getText();
        String liulandingdan = driver.findElement(By.xpath("/html/body/div[1]/a[6]")).getText();
        String buy = driver.findElement(By.xpath("/html/body/div[1]/a[7]")).getText();
        //断言 校验文本是否符合预期
        Thread.sleep(2000);
        Assertions.assertEquals("请选择对应的功能进行操作。",center);
        Assertions.assertEquals("收银台",title);
        Assertions.assertEquals("注册账号",zhuce);
        Assertions.assertEquals("切换账号",denglu);
        Assertions.assertEquals("上架商品",shangjia);
        Assertions.assertEquals("浏览商品",liulangoods);
        Assertions.assertEquals("更新商品",gengxin);
        Assertions.assertEquals("浏览订单",liulandingdan);
        Assertions.assertEquals("购买商品",buy);
    }

    /**
     * 注册账号页面
     */
    @Test
    @Order(2)
    void zhuce(){
        driver.findElement(By.xpath("/html/body/div[1]/a[1]")).click();
        String register = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册",register);
    }
    /**
     * 切换账号页面
     */
    @Test
    @Order(3)
    void qiehuan(){
        driver.findElement(By.xpath("/html/body/div[1]/a[2]")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value);
    }
    /**
     * 上架商品页面
     */
    @Test
    @Order(4)
    void shangjia(){
        driver.findElement(By.xpath("/html/body/div[1]/a[3]")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("上架商品",value);
    }
    /**
     * 未登录
     * 浏览商品页面
     */
    @Test
    @Order(5)
    void liulanGoods(){
        driver.findElement(By.xpath("/html/body/div[1]/a[4]")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
//        Thread.sleep(5000);
        Assertions.assertEquals("用户未登录,无法进行该操作",value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();

        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value1);
    }
    /**
     *
     * 更新商品页面
     */
    @Test
    @Order(6)
    void gengxin(){
        driver.findElement(By.xpath("/html/body/div[1]/a[5]")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("更新商品",value);
    }
    /**
     * 用户未登录
     * 浏览订单页面
     */
    @Test
    @Order(7)
    void liulan() throws InterruptedException {
        driver.findElement(By.xpath("/html/body/div[1]/a[6]")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
//        Thread.sleep(5000);
        Assertions.assertEquals("用户未登录,无法进行该操作",value);

        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();

        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value1);
    }

    /**
     * 购买商品页面
     */
    @Test
    @Order(8)
    void buy(){
        driver.findElement(By.xpath("/html/body/div[1]/a[7]")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("购买商品",value);
    }

    /**
     * 用户登录
     * 浏览订单页面
     */

    @Test
    @Order(9)
    void liulanLodin() throws InterruptedException {
        //用户登录
        driver.findElement(By.xpath("/html/body/div[1]/a[2]")).click();
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("段佳禄");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("123456");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();

        //浏览订单操作
        driver.findElement(By.xpath("/html/body/div[1]/a[6]")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/div[1]/h2")).getText();
        Assertions.assertEquals("浏览订单",value);

//        Thread.sleep(2000);
        //浏览商品操作
        driver.findElement(By.xpath("/html/body/div[1]/a[4]")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/div[1]/h2")).getText();
        Assertions.assertEquals("浏览商品",value1);
//        driver.quit();
    }

//    @AfterAll
//    static void quit(){
//        driver.quit();
//    }
}

注册页面

根据设计好的测试用例来进行测试

package com.djl.autotest_item.Test;

import com.djl.autotest_item.comment.CommonDriver;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.ThreadLocalRandom;

/**
 * 注册页面
 */
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class registerTest extends CommonDriver {
    private static ChromeDriver driver = getDriver();

    /**
     * 在每次执行方法之前,都先跳到注册账号页面
     */
    @BeforeAll
    static void getUrl(){
        driver.get("http://127.0.0.1:8080/register.html");
    }

    /**
     * 用户名和密码都为空
     */
    @Test
    @Order(1)
    void usernameAndPasswordNull(){
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册",value);
    }

    /**
     * 用户名不为空  密码都为空
     */
    @Test
    @Order(2)
    void PasswordNull(){
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("王麻子");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册",value);
    }

    /**
     * 用户名为空  密码不为空
     */
    @Test
    @Order(3)
    void usernameNull(){
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).clear();

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("123456");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册",value);
    }

    /**
     * 用户名和密码都不为空
     * 用户名重复
     */
    @Test
    @Order(4)
    void usernameAndPassword2(){
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("段佳禄");

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("123456");

        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户名已经被注册",value);

        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册",value1);
    }
    /**
     * 用户名为空格  密码为空格
     */
    @Test
    @Order(5)
    void kongge(){
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("   ");

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("   ");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户名不能为空",value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册",value1);
    }

    /**
     * 用户名为正常  密码为空格
     */
    @Test
    @Order(6)
    void kongge1() {
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("段佳禄");

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("   ");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("密码不能为空", value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册", value1);
    }
    /**
     * 验证用户名最大长度
     */
    @Test
    @Order(7)
    void usernameLen() throws InterruptedException {
        String str = "";
        for(int i = 0; i < 46;i++){
            str += i;
        }
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input"))
                .sendKeys(str);
//        Thread.sleep(2000);
        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("123456");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
//        Thread.sleep(2000);
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户名最长为+45+个字", value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册", value1);
    }
    /**
     * 验证密码最大长度
     */
    @Test
    @Order(8)
    void passwordLen() throws InterruptedException {
        String str = "";
        for(int i = 0; i < 46;i++){
            str += i;
        }
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input"))
                .sendKeys("123");
//        Thread.sleep(2000);
        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys(str);
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
//        Thread.sleep(2000);
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("密码最长为+45+个字", value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("注册", value1);
    }

    /**
     * 用户名和密码都不为空
     * 用户名不重复,注册成功,跳转到登录界面
     */
    @Test
    @Order(9)
    void usernameAndPasswordNotNull(){
        ThreadLocalRandom random = ThreadLocalRandom.current();
        int n = random.nextInt(0,1000);
        String s = n+"";
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys(s);

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("123456");

        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value);
    }

//    @AfterAll
//    static void quit(){
//        driver.quit();
//    }
}

登录页面

package com.djl.autotest_item.Test;

import com.djl.autotest_item.comment.CommonDriver;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.ThreadLocalRandom;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class loginTest extends CommonDriver {
    private static ChromeDriver driver = getDriver();

    /**
     * 在每次执行方法之前,都先跳到登录账号页面
     */
    @BeforeAll
    static void getUrl(){
        driver.get("http://127.0.0.1:8080/login.html");
    }
    /**
     * 用户名和密码都为空
     */
    @Test
    @Order(1)
    void usernameAndPasswordNull(){
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value);
    }

    /**
     * 用户名不为空  密码都为空
     */
    @Test
    @Order(2)
    void PasswordNull(){
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("王麻子");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value);

    }

    /**
     * 用户名为空  密码不为空
     */
    @Test
    @Order(3)
    void usernameNull() throws InterruptedException {
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).clear();
        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("123456");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value);
    }


    /**
     * 用户名为空格  密码为空格
     */
    @Test
    @Order(4)
    void kongge(){
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("   ");

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("   ");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        //校验是否符合预期
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户名或者密码错误",value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value1);
    }

    /**
     * 用户名为正常  密码为空格
     */
    @Test
    @Order(5)
    void kongge1() {
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("段佳禄");

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("   ");
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户名或者密码错误", value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录", value1);
    }


    /**
     * 用户名和密码都不为空
     * 用户名不存在,登录失败,跳转到登录界面
     */
    @Test
    @Order(6)
    void usernameAndPasswordNotNull(){
        ThreadLocalRandom random = ThreadLocalRandom.current();
        int n = random.nextInt(0,1000);
        String s = n+"";
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys(s);

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("123456");

        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户名或者密码错误", value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录", value1);
    }
    /**
     * 用户名和密码都不为空
     * 用户名存在
     */
    @Test
    @Order(7)
    void usernameAndPassword2() throws InterruptedException {
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("段佳禄");

        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys("123456");

        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        //校验是否符合预期
//        Thread.sleep(2000);
        String center = driver.findElement(By.xpath("/html/body/div[2]/div[1]")).getText();
        Assertions.assertEquals("请选择对应的功能进行操作。",center);

    }


//    @Test
//    @Order(8)
//    void quit(){
//        driver.quit();
//    }
}

上架商品页面

package com.djl.autotest_item.Test;

import com.djl.autotest_item.comment.CommonDriver;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.IOException;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class shangjiaTest extends CommonDriver {
    private static ChromeDriver driver = getDriver();

    @BeforeAll
    static void getUrl(){
        driver.get("http://127.0.0.1:8080/inbound.html");
    }
    /**
     * 在用户未登录情况下,输入数据 进行上架商品,会跳转到登录界面,此时输入数据正确错误已经无关
     */
    @Test
    @Order(1)
    void noLogin(){
        上架空格语句();
        //点击上架
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户未登录,无法进行该操作",value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value1);
    }

    /**
     * 登录
     *
     */
    @Test
    @Order(2)
    void login() throws InterruptedException {
        //用户登录
        loginTest login = new loginTest();
        loginTest.getUrl();
        login.usernameAndPassword2();
    }

    /**
     * 在登录状态下
     * 进行各字段的判空处理
     */
    @Test
    @Order(3)
    void pdNull() throws InterruptedException, IOException {
//        用户登录
//        login();
        getUrl();
        上架空格语句();
        //点击上架
        //截图
        getScr(getClass().getName());
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("商品名称不能为空",value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("上架商品",value1);
        //截图
        getScr(getClass().getName());
    }

    /**
     * 登录状态
     * 只有库存 价格 折扣 是必须是数字的,其他字段都是String类型
     * 并且库存 折扣 是整数  价格 可以是 小数
     */
    @Test
    @Order(4)
    void yanzheng() throws InterruptedException, IOException {
//        login();
        //名称
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("水果");
        //介绍
        driver.findElement(By.xpath("/html/body/div[2]/form/div[3]/input")).sendKeys("吃的");
        //单位
        driver.findElement(By.xpath("/html/body/div[2]/form/div[4]/input")).sendKeys("个");
        上架商品各字段的合法性();
        //截图
        getScr(getClass().getName());

        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("上架商品",value1);
        //截图
        getScr(getClass().getName());

    }

//    @AfterAll
//    static void quit(){
//        driver.quit();
//    }

}

浏览商品页面

package com.djl.autotest_item.Test;

import com.djl.autotest_item.comment.CommonDriver;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.IOException;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class lookGoods extends CommonDriver {
    private static ChromeDriver driver = getDriver();

    @BeforeAll
    static void getUrl(){
        driver.get("http://127.0.0.1:8080/browse-goods.html");
    }

    /**
     * 用户未登录
     * 进行浏览商品操作  直接提示用户未登录,跳转到登录界面
     */
    @Test
    @Order(1)
    void liulanGoodNoUsername() throws IOException {
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户未登录,无法进行该操作",value);
        //截图
        getScr(getClass().getName());
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value1);
        //截图
        getScr(getClass().getName());
    }
    /**
     * 登录
     *
     */
    @Test
    @Order(2)
    void login() throws InterruptedException {
        //用户登录
        loginTest login = new loginTest();
        loginTest.getUrl();
        login.usernameAndPassword2();
    }

    /**
     * 登录状态下的浏览界面
     */
    @Test
    @Order(3)
    void liulanUsername(){
        getUrl();
        String value = driver.findElement(By.xpath("/html/body/div[2]/div[1]/h2")).getText();
        Assertions.assertEquals("浏览商品",value);
    }

//    @AfterAll
//    static void quit(){
//        driver.quit();
//    }
}

更新商品页面

package com.djl.autotest_item.Test;

import com.djl.autotest_item.comment.CommonDriver;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.IOException;
import java.util.stream.Stream;

public class gengxinGoods extends CommonDriver {
    private static ChromeDriver driver = getDriver();

    /**
     * 跳转到更新商品页面
     */
    @BeforeAll
    static void getUrl(){
        driver.get("http://127.0.0.1:8080/update-goods.html");
    }

    /**
     * 在用户未登录情况下,输入数据 进行更新 商品,会跳转到登录界面,此时输入数据正确错误已经无关
     */
    @Test
    @Order(1)
    void noLogin(){
        上架空格语句();
        driver.findElement(By.xpath("/html/body/div[2]/form/div[7]/input")).sendKeys(" ");
        //点击上架
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("用户未登录,无法进行该操作",value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("登录",value1);
    }

    /**
     * 登录
     *
     */
    @Test
    @Order(2)
    void login() throws InterruptedException, IOException {
        //用户登录
        loginTest login = new loginTest();
        loginTest.getUrl();
        login.usernameAndPassword2();
        getScr(getClass().getName());
    }

    /**
     * 在登录状态下
     * 进行各字段的判空处理
     */
    @Test
    @Order(3)
    void pdNull() throws InterruptedException {
//        login();
//        getUrl();
        上架空格语句();
        driver.findElement(By.xpath("/html/body/div[2]/form/div[7]/input")).sendKeys(" ");

        //点击上架
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement(By.xpath("/html/body/div/p[1]")).getText();
        Assertions.assertEquals("商品+id+不能为空",value);
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("上架商品",value1);
    }

    /**
     * 登录状态
     * 只有库存 价格 折扣 是必须是数字的,其他字段都是String类型
     * 并且库存 折扣 是整数  价格 可以是 小数
     */
    @Test
    @Order(4)
    void yanzheng() throws IOException {
//        login();
//        getUrl();
        //名称
        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys("水果");
        //介绍
        driver.findElement(By.xpath("/html/body/div[2]/form/div[3]/input")).sendKeys("吃的");
        //单位
        driver.findElement(By.xpath("/html/body/div[2]/form/div[4]/input")).sendKeys("个");
        上架商品各字段的合法性();
        driver.findElement(By.xpath("/html/body/div[2]/form/div[7]/input")).sendKeys("哈哈");
        //截图
        getScr(getClass().getName());
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        driver.findElement(By.xpath("/html/body/div/p[2]/a")).click();
        String value1 = driver.findElement(By.xpath("/html/body/div[2]/form/h2")).getText();
        Assertions.assertEquals("上架商品",value1);
    }
    @ParameterizedTest
    @MethodSource
    @Order(5)
    void yan(int a1,String a2,int a3,String a4,String a5,double a6,int a7) throws IOException {
//        login();
//        getUrl();

        driver.findElement(By.xpath("/html/body/div[2]/form/div[1]/input")).sendKeys(a1+"");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[2]/input")).sendKeys(a2);
        driver.findElement(By.xpath("/html/body/div[2]/form/div[3]/input")).sendKeys(a3+"");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[4]/input")).sendKeys(a4);
        driver.findElement(By.xpath("/html/body/div[2]/form/div[5]/input")).sendKeys(a5);
        driver.findElement(By.xpath("/html/body/div[2]/form/div[6]/input")).sendKeys(a6+"");
        driver.findElement(By.xpath("/html/body/div[2]/form/div[7]/input")).sendKeys(a7+"");
        //点击更新

        //截图
        getScr(getClass().getName());
        driver.findElement(By.xpath("/html/body/div[2]/form/button")).click();
        String value = driver.findElement((By.xpath("/html/body/div[2]/div[1]/table/tbody/tr/td[1]"))).getText();
        Assertions.assertEquals(a1+"",value);
    }
//    //编号
//    int a1 = 1;
//    String a2 = "面包"; //名称
//    int a3 = 2000;  //库存
//    String a4 = "吃的"; //介绍
//    String a5 = "个";  //单位
//    double a6 = 2.5; //价格
//    int a7 = 100;  //折扣
    static Stream<Arguments> yan(){
        return Stream.of(Arguments.arguments(1,"面包",2000,"吃的","个",2.5,100));
    }
//    @AfterAll
//    static void quit(){
//        driver.quit();
//    }
}

Quit类

package com.djl.autotest_item.Test;

import com.djl.autotest_item.comment.CommonDriver;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.chrome.ChromeDriver;

public class QuitTest extends CommonDriver {
    private static ChromeDriver driver = new ChromeDriver();
    @Test
    void quit(){
        driver.quit();
    }
}

使用测试套件@Suite进行整体的自动化测试

package com.djl.autotest_item.Test;

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

@Suite
//按照类的顺序进行测试
@SelectClasses({IndexTest.class,registerTest.class,loginTest.class,shangjiaTest.class,lookGoods.class,gengxinGoods.class,QuitTest.class})
public class RunSuite {
}

对于界面测试、兼容性测试、易用性测试、安全性测试进行了手工测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值