• 【售货系统的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;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85

    首页的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();
    //    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166

    注册页面

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

    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();
    //    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182

    登录页面

    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();
    //    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140

    上架商品页面

    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();
    //    }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104

    浏览商品页面

    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();
    //    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    更新商品页面

    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();
    //    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139

    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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    使用测试套件@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 {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

  • 相关阅读:
    如何使用 FaceIO 在 Vue.JS 中实现人脸识别?
    第12讲:DQL数据查询语句的执行顺序以及语句汇总
    CVPR2020:Seeing Through Fog Without Seeing Fog
    搭建LNMP环境并配置个人博客系统
    深入区块链技术(一)
    java计算机毕业设计vue架构云餐厅美食订餐系统MyBatis+系统+LW文档+源码+调试部署
    万字摸透Redis、MySQL和ZooKeeper分布式锁,还不会的出来!
    经典算法之顺序查找(Sequential Search)
    羧基/叠氮/炔烃/DBCO/羟基/生物素修饰的Fe3O4磁性纳米颗粒 COOH-Fe3O4
    Facebook改名Meta,“元宇宙”到底是什么?
  • 原文地址:https://blog.csdn.net/DJL_new_life/article/details/126722594