竞赛管理系统实现自动化测试

news2025/2/5 9:48:46

目录

一、为竞赛管理系统设计测试用例

二、根据测试用例进行测试

登录页面测试

功能测试

界面测试 

用户注册页面 

功能测试

界面测试

竞赛信息列表页面测试 

界面测试 

添加竞赛信息页面测试

 功能测试

界面测试 

修改竞赛信息页面测试 

功能测试


一、为竞赛管理系统设计测试用例

 

二、根据测试用例进行测试

定义驱动为全局变量,在测试之前,需要获取到驱动。

public static EdgeDriver getDriver(){
        if(driver == null){
            synchronized (PrepareTest.class){
                if(driver == null){
                    EdgeOptions options = new EdgeOptions();
                    options.addArguments("--remote-allow-origins=*");
                    driver = new EdgeDriver(options);
                }
            }
        }
        return driver;
    }

登录页面测试

定义start()和close()方法确保测试之前和测试之后都执行一次这两个方法。

@BeforeAll
    public  static void start(){
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/login.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
    }

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

功能测试

对正确的用户名和密码进行接口测试: 

/**
     * 测试正确登录
     */
    @ParameterizedTest
    @CsvSource(value = {"Jake,12345","lucky,12345"})
    public void testLoginTrue(String user,String password) throws InterruptedException {
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(user);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        String url = driver.getCurrentUrl();
        Assertions.assertEquals("http://43.143.208.132:8086/list.html",url);
        driver.navigate().back();
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
    }

测试结果:

 

 对登录名为空进行接口测试:

@ParameterizedTest
    @CsvSource(value = {",12345"})
    public void testLoginNullUser(String user,String password){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        if(password != null){
            driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        }
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("请输入登录名",tips);
    }

测试结果:

 

对密码为空进行接口测试:

@ParameterizedTest
    @CsvSource(value = {"Jake,"})
    public void testLoginNullPassword(String user,String password){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        if(user != null){
            driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(user);
        }
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("请输入密码",tips);
    }

测试结果:

 

对用户名或密码错误接口测试:

 @ParameterizedTest
    @CsvSource(value = {"ioio,12345","jake,0980"})
    public void testLoginErrorUser(String user,String password) throws InterruptedException {
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(user);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        System.out.println("alert: " + tips);
        Assertions.assertEquals("用户名或密码输入错误",tips);
        alert.accept();
    }

测试结果:

 

 

测试用户名中含有特殊字符的接口测试: 

 @ParameterizedTest
    @CsvSource(value = {"yu^%$@,12345"})
    public void testLoginPartUser(String user,String password) throws InterruptedException {
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(user);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        String url = driver.getCurrentUrl();
        Assertions.assertEquals("http://43.143.208.132:8086/list.html",url);
        driver.navigate().back();
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
    }

测试结果:

 

界面测试 

public class InterfaceTest {
    public static EdgeDriver driver;
    public static EdgeDriver getDriver(){
        if(driver == null){
            synchronized (PrepareTest.class){
                if(driver == null){
                    EdgeOptions options = new EdgeOptions();
                    options.addArguments("--remote-allow-origins=*");
                    driver = new EdgeDriver(options);
                }
            }
        }
        return driver;
    }
    @BeforeAll
    public  static void start(){
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/login.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    }

    @AfterAll
    public static  void close(){
        driver.quit();
    }
    /**
     * 测试登陆文字
     */
    @Test
    public void testDengLu(){
        String dengLu =  driver.findElement(By.xpath("//*[@id=\"body\"]/div/h3")).getText();
        Assertions.assertEquals(dengLu,"用户登录");
    }

    /**
     * 测试提交按钮的文字
     */
    @Test
    public void testTiJiao(){
        String tiJiao =  driver.findElement(By.xpath("//*[@id=\"submit\"]")).getAttribute("value");
        Assertions.assertEquals(tiJiao,"登录");
    }

    /**
     * 测试用户名输入框
     */
    @Test
    public void testUserInput(){
        WebElement webElement =  driver.findElement(By.xpath("//*[@id=\"username\"]"));
        Assertions.assertNotNull(webElement);
    }
    /**
     * 测试密码输入框
     */
    @Test
    public void testPasswordInput(){
        WebElement webElement =  driver.findElement(By.xpath("//*[@id=\"password\"]"));
        Assertions.assertNotNull(webElement);
    }
    /**
     * 测试提交按钮
     */
    @Test
    public void testSubmit(){
        WebElement webElement =  driver.findElement(By.xpath("//*[@id=\"submit\"]"));
        Assertions.assertNotNull(webElement);
    }
}

测试结果:

 

用户注册页面 

功能测试

 首先定义start()方法和close()方法:

@BeforeAll
    public  static void start(){
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/addUser.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    }

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

 

 

对空的用户名进行接口测试: 

 /**
     * 测试用户名为空
     */
    @ParameterizedTest
    @CsvSource(value = {",12345,12345"})
    public void testNullUsername(String username,String password,String password2){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).sendKeys(password2);
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("请先输入用户名",tips);
        alert.accept();
    }

测试结果:

 

对密码为空进行接口测试: 

   /**
     * 测试密码为空
     */
    @ParameterizedTest
    @CsvSource(value = {"tester,,12345"})
    public void testNullPassword(String username,String password,String password2){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(username);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).sendKeys(password2);
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("请先输入密码",tips);
        alert.accept();
    }

测试结果:

 

对确认密码为空进行接口测试: 

/**
     * 测试确认密码为空
     */
    @ParameterizedTest
    @CsvSource(value = {"tester,12345,"})
    public void testNullPassword2(String username,String password,String password2){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(username);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("请先输入确认密码",tips);
        alert.accept();
    }

测试结果:

 

密码与确认密码不一致的接口测试: 

/**
     * 测试两次密码不一致
     */
    @ParameterizedTest
    @CsvSource(value = {"tester,12345,09876"})
    public void testNOtEqual(String username,String password,String password2){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(username);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).sendKeys(password2);
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("两次密码输入不一致,请重新输入",tips);
        alert.accept();
    }

测试结果:

 

用户已存在的接口测试:

/**
     * 测试用户已存在
     */
    @ParameterizedTest
    @CsvSource(value = {"jake,12345,12345"})
    public void testUserExit(String username,String password,String password2){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(username);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).sendKeys(password2);
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("用户已存在",tips);
        alert.accept();
    }

测试结果:

 

用户名或密码含有特殊字符的接口测试: 

/**
     * 测试用户名或密码中含有特殊字符
     */
    @ParameterizedTest
    @CsvSource(value = {"j&#*@^,12345,12345","pong,*&^%),*&^%)"})
    public void testPartUser(String username,String password,String password2){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(username);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).sendKeys(password2);
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("添加成功",tips);
        alert.accept();
        start();
    }

测试结果:

 

正常注册的接口测试: 

/**
          * 正常注册
          */
    @ParameterizedTest
    @CsvSource(value = {"kuqi,12345,12345"})
    public void testPartUser(String username,String password,String password2){
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys(username);
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys(password);
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password2\"]")).sendKeys(password2);
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("添加成功",tips);
        alert.accept();
    }

测试结果:

 

界面测试

 

public class InterfaceTest {
    public static EdgeDriver driver;
    public static EdgeDriver getDriver(){
        if(driver == null){
            synchronized (PrepareTest.class){
                if(driver == null){
                    EdgeOptions options = new EdgeOptions();
                    options.addArguments("--remote-allow-origins=*");
                    driver = new EdgeDriver(options);
                }
            }
        }
        return driver;
    }
    @BeforeAll
    public  static void start(){
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/addUser.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    }

    @AfterAll
    public static  void close(){
        driver.quit();
    }
    /**
     * 测试登陆文字
     */
    @Test
    public void testDengLu(){
        String dengLu =  driver.findElement(By.xpath("/html/body/div/h3")).getText();
        Assertions.assertEquals(dengLu,"注册用户");
    }

    /**
     * 测试提交按钮的文字
     */
    @Test
    public void testTiJiao(){
        String tiJiao =  driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).getAttribute("value");
        Assertions.assertEquals(tiJiao,"提交");
    }

    /**
     * 测试用户名输入框
     */
    @Test
    public void testUserInput(){
        WebElement webElement =  driver.findElement(By.xpath("//*[@id=\"username\"]"));
        Assertions.assertNotNull(webElement);
    }
    /**
     * 测试密码输入框
     */
    @Test
    public void testPasswordInput(){
        WebElement webElement =  driver.findElement(By.xpath("//*[@id=\"password\"]"));
        Assertions.assertNotNull(webElement);
    }
    /**
     * 测试确认密码输入框
     */
    @Test
    public void testPassword2Input(){
        WebElement webElement =  driver.findElement(By.xpath("//*[@id=\"password2\"]"));
        Assertions.assertNotNull(webElement);
    }
    /**
     * 测试提交按钮
     */
    @Test
    public void testSubmit(){
        WebElement webElement =  driver.findElement(By.xpath("//*[@id=\"btn_sub\"]"));
        Assertions.assertNotNull(webElement);
    }
}

测试结果:

 

竞赛信息列表页面测试 

首先定义start()方法和close()方法:

    @BeforeAll
    public  static void start(){
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/login.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("jake");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("12345");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
    }

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

点击修改按钮跳转到登录页面的测试:

/**
     * 修改按钮跳转
     */
    @Test
    public void testPartUser() {
        driver.findElement(By.xpath("//*[@id=\"info\"]/tr[1]/th[9]/a[1]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
        String url = driver.getCurrentUrl();
        Assertions.assertEquals("http://43.143.208.132:8086/update.html?competition_id=1",url);
    }

测试结果:

 

测试删除按钮: 

/**
     * 测试删除按钮
     */
    @Test
    public void DeleteTest() {
        driver.findElement(By.xpath("//*[@id=\"info\"]/tr[1]/th[9]/a[2]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        System.out.println("alert: " + tips);
        Assertions.assertEquals("确认删除本条竞赛信息吗?一旦删除,数据不可恢复!",tips);
        alert.accept();

    }

测试结果:

 

测试退出按钮: 

 /**
     * 测试退出按钮
     */
    @Test
    public void exitTest() {
        driver.findElement(By.xpath("/html/body/nav/div/button[1]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
        String url = driver.getCurrentUrl();
        Assertions.assertEquals("http://43.143.208.132:8086/login.html",url);
    }

测试结果:

 

测试注销按钮: 

/**
     * 测试注销按钮
     */
    @Test
    public void logoutTest() {
        driver.findElement(By.xpath("/html/body/nav/div/button[2]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        System.out.println("alert: " + tips);
        Assertions.assertEquals("确认注销当前用户吗",tips);
        alert.dismiss();
        String url = driver.getCurrentUrl();
        Assertions.assertEquals("http://43.143.208.132:8086/list.html",url);
    }

测试结果: 

界面测试 

public class InterfaceTest {
    public static EdgeDriver driver;
    public static EdgeDriver getDriver(){
        if(driver == null){
            synchronized (PrepareTest.class){
                if(driver == null){
                    EdgeOptions options = new EdgeOptions();
                    options.addArguments("--remote-allow-origins=*");
                    driver = new EdgeDriver(options);
                }
            }
        }
        return driver;
    }
    @BeforeAll
    public  static void start() throws InterruptedException {
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/login.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(18));
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("lucky");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("12345");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        Thread.sleep(5);
    }

    @AfterAll
    public static  void close(){
        driver.quit();
    }
    /**
     * 测试页面文字
     */
    @Test
    public void testWord(){
        String word =  driver.findElement(By.xpath("/html/body/nav/div/div/h4")).getText();
        Assertions.assertEquals(word,"欢迎进入竞赛信息访问系统");
    }

    /**
     * 测试按钮
     */
    @Test
    public void testButton(){
        WebElement delete =  driver.findElement(By.xpath("//*[@id=\"delete\"]"));
        Assertions.assertNotNull(delete);
        WebElement exit =  driver.findElement(By.xpath("/html/body/nav/div/button[1]"));
        Assertions.assertNotNull(exit);
        WebElement logout =  driver.findElement(By.xpath("/html/body/nav/div/button[2]"));
        Assertions.assertNotNull(logout);

    }

    /**
     * 测试条件查询输入框
     */
    @Test
    public void testSelectInput(){
        WebElement webElement =  driver.findElement(By.xpath("//*[@id=\"competition_name\"]"));
        Assertions.assertNotNull(webElement);
        WebElement webElement1 =  driver.findElement(By.xpath("//*[@id=\"publication_date\"]"));
        Assertions.assertNotNull(webElement1);
        WebElement webElement2 =  driver.findElement(By.xpath("//*[@id=\"submission_deadline\"]"));
        Assertions.assertNotNull(webElement2);
    }
    /**
     * 测试分页按钮
     */
    @Test
    public void limitButton(){
        WebElement first =  driver.findElement(By.xpath("//*[@id=\"all\"]/li[1]/a"));
        Assertions.assertNotNull(first);
        WebElement pre =  driver.findElement(By.xpath("//*[@id=\"all\"]/li[2]"));
        Assertions.assertNotNull(pre);
        WebElement next =  driver.findElement(By.xpath("//*[@id=\"all\"]/li[3]/a"));
        Assertions.assertNotNull(next);
        WebElement last =  driver.findElement(By.xpath("//*[@id=\"all\"]/li[4]/a"));
        Assertions.assertNotNull(last);
    }
    /**
     * 测试分页信息
     */
    @Test
    public void limitWord(){
        String  text =  driver.findElement(By.xpath("//*[@id=\"pageinfo\"]")).getText();
        Assertions.assertEquals("共10条数据,共1页",text);

    }

}

测试结果:

 

添加竞赛信息页面测试

 功能测试

此处的输入框为空的逻辑与注册用户的逻辑基本一致,便不再赘述。

的定义start()和close()方法。

@BeforeAll
    public  static void start(){
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/login.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(18));
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("lucky");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("12345");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.findElement(By.xpath("/html/body/div/div[2]/a[1]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
    }

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

添加时间格式不正确测试: 

 /**
     * 时间格式不符合
     */
    @Test
    public void TimeTest(){
        driver.findElement(By.xpath("//*[@id=\"competition_name\"]")).sendKeys("互联网+大赛");
        driver.findElement(By.xpath("//*[@id=\"competition_description\"]")).sendKeys("科创");
        driver.findElement(By.xpath("//*[@id=\"publication_date\"]")).sendKeys("2023-09-12");
        driver.findElement(By.xpath("//*[@id=\"submission_deadline\"]")).sendKeys("2023-09-15");
        driver.findElement(By.xpath("//*[@id=\"sponsor\"]")).sendKeys("lucky");
        driver.findElement(By.xpath("//*[@id=\"venue\"]")).sendKeys("实验楼");
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("时间格式输入不正确,请重新输入",tips);
        alert.accept();
    }

测试结果:

 

竞赛已存在添加测试: 

/**
     * 竞赛信息已存在
     */
    @Test
    public void ExitTest(){
        driver.findElement(By.xpath("//*[@id=\"competition_name\"]")).sendKeys("乘风破浪的姐姐");
        driver.findElement(By.xpath("//*[@id=\"competition_description\"]")).sendKeys("综艺");
        driver.findElement(By.xpath("//*[@id=\"publication_date\"]")).sendKeys("2023-09-12 09:12:12");
        driver.findElement(By.xpath("//*[@id=\"submission_deadline\"]")).sendKeys("2023-09-15 12:12:12");
        driver.findElement(By.xpath("//*[@id=\"sponsor\"]")).sendKeys("lucky");
        driver.findElement(By.xpath("//*[@id=\"venue\"]")).sendKeys("实验楼");
        driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
        Alert alert = driver.switchTo().alert();
        String tips =alert.getText();
        Assertions.assertEquals("添加失败",tips);
        alert.accept();
    }

测试结果: 

 

正确添加竞赛信息测试:

/**
         * 正确添加竞赛信息
         */
        @Test
        public void NormalTest(){
            driver.findElement(By.xpath("//*[@id=\"competition_name\"]")).sendKeys("披风战绩的哥哥");
            driver.findElement(By.xpath("//*[@id=\"competition_description\"]")).sendKeys("综艺");
            driver.findElement(By.xpath("//*[@id=\"publication_date\"]")).sendKeys("2023-09-12 09:12:12");
            driver.findElement(By.xpath("//*[@id=\"submission_deadline\"]")).sendKeys("2023-09-15 12:12:12");
            driver.findElement(By.xpath("//*[@id=\"sponsor\"]")).sendKeys("lucky");
            driver.findElement(By.xpath("//*[@id=\"venue\"]")).sendKeys("实验楼");
            driver.findElement(By.xpath("//*[@id=\"btn_sub\"]")).click();
            Alert alert = driver.switchTo().alert();
            String tips =alert.getText();
            Assertions.assertEquals("添加成功",tips);
            alert.accept();
    }

测试结果:

 

测试返回按钮: 

/**
     * 测试返回按钮
     */
    @Test
    public void ExitTest(){
        driver.findElement(By.xpath("//*[@id=\"btn_back\"]")).click();
        String url = driver.getCurrentUrl();
        Assertions.assertEquals("http://43.143.208.132:8086/list.html",url);
       
    }

测试结果:

 

界面测试 

public class InterfaceTest {
    public static EdgeDriver driver;
    public static EdgeDriver getDriver(){
        if(driver == null){
            synchronized (PrepareTest.class){
                if(driver == null){
                    EdgeOptions options = new EdgeOptions();
                    options.addArguments("--remote-allow-origins=*");
                    driver = new EdgeDriver(options);
                }
            }
        }
        return driver;
    }
    @BeforeAll
    public  static void start(){
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/login.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(18));
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("lucky");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("12345");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.findElement(By.xpath("/html/body/div/div[2]/a[1]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
    }

    @AfterAll
    public static  void close(){
        driver.quit();
    }
    /**
     * 测试输入框
     */
    @Test
    public void InputTest(){
        WebElement element1 =  driver.findElement(By.xpath("//*[@id=\"competition_name\"]"));
        Assertions.assertNotNull(element1);
        WebElement element2 = driver.findElement(By.xpath("//*[@id=\"competition_description\"]"));
        Assertions.assertNotNull(element2);
        WebElement element3 = driver.findElement(By.xpath("//*[@id=\"publication_date\"]"));
        Assertions.assertNotNull(element3);
        WebElement element4 = driver.findElement(By.xpath("//*[@id=\"submission_deadline\"]"));
        Assertions.assertNotNull(element4);
        WebElement element5 = driver.findElement(By.xpath("//*[@id=\"sponsor\"]"));
        Assertions.assertNotNull(element5);
        WebElement element6 = driver.findElement(By.xpath("//*[@id=\"venue\"]"));
        Assertions.assertNotNull(element6);
    }
    /**
     * 测试标题
     */
    @Test
    public void testWord(){
        String word =  driver.findElement(By.xpath("/html/body/div/h3")).getText();
        Assertions.assertEquals(word,"添加竞赛信息");
    }
    /**
     * 测试按钮
     */
    @Test
    public void ButtonTest(){
        WebElement element1 =  driver.findElement(By.xpath("//*[@id=\"btn_sub\"]"));
        Assertions.assertNotNull(element1);
        WebElement element2 = driver.findElement(By.xpath("//*[@id=\"btn_back\"]"));
        Assertions.assertNotNull(element2);
    }
}

测试结果:

 

修改竞赛信息页面测试 

功能测试

 

输入框为空、时间格式不符合以及按钮测试与上述页面类似,就不再赘述。

定义start()和close()方法。 

@BeforeAll
    public  static void start(){
        driver = getDriver();
        driver.get("http://43.143.208.132:8086/login.html");
        //使用隐式等待渲染页面完成
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(18));
        driver.findElement(By.xpath("//*[@id=\"username\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"username\"]")).sendKeys("lucky");
        driver.findElement(By.xpath("//*[@id=\"password\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"password\"]")).sendKeys("12345");
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.findElement(By.xpath("//*[@id=\"info\"]/tr[1]/th[9]/a[1]")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
    }

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

数据回显是否正常测试: 

/**
     * 数据回显是否正常
     */
    @Test
    public void backTest(){
        String Competition_name = driver.findElement(By.xpath("//*[@id=\"competition_name\"]")).getText();
        Assertions.assertEquals(Competition_name, "乘风破浪的姐姐");
        String des = driver.findElement(By.xpath("//*[@id=\"competition_description\"]")).getText();
        Assertions.assertEquals(des, "综艺");
        String publication_time = driver.findElement(By.xpath("//*[@id=\"publication_date\"]")).getText();
        Assertions.assertEquals(publication_time, "2022-12-10 09:00:00");
        String deadline_time =driver.findElement(By.xpath("//*[@id=\"submission_deadline\"]")).getText();
        Assertions.assertEquals(deadline_time, "2022-12-19 09:00:00");
        String sponsor = driver.findElement(By.xpath("//*[@id=\"sponsor\"]")).getText();
        Assertions.assertEquals(sponsor, "娃哈哈企业");
        String spot = driver.findElement(By.xpath("//*[@id=\"venue\"]")).getText();
        Assertions.assertEquals(spot, "长沙");
    }

测试结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rollup 的作用、使用教程、支持 Vue、以及与 Webpack / Babel 的区别

一、前置知识 没接触过前端模块化概念的同学可先参考:JS & Node 模块化解释:AMD、UMD、CommonJS、 ESM 二、什么是 Rollup ? Rollup 工具可以将代码转成不同模块,实现一套代码多端(浏览器/Node)引入…

SpringBoot的静态资源文件访问问题

一、采用默认的文件存放位置: Spring Boot 对静态资源映射提供了默认配置, 默认将 /** 所有访问映射到以下目录: classpath:/static classpath:/public classpath:/resources classpath:/META-INF/resources在如上路径的文件可以被直接访问…

Havoc!新的开源命令和控制C2框架

工具介绍 Havoc是一款现代化可扩展的后渗透命令控制框架,可作为Cobalt Strike和Brute Ratel等付费选项的替代方案。 关注【Hack分享吧】公众号,回复关键字【230618】获取下载链接 Havoc包含各种各样的模块,允许渗透测试人员(和黑…

Rust 数据类型 之 结构体(Struct)

目录 结构体(Struct) 定义与声明 结构体定义 结构体实例 结构体分类 单元结构体(Unit Struct) 元组结构体(Tuple Struct) 具名结构体(Named Struct) 结构体嵌套 结构体方法…

华为云ROMA Connect 的智能集成 – 现代企业数字化转型的新利器

在当今数字信息智能化的时代,人工智能技术逐渐深入企业的生产流程和实践中。人工智能的应用成为现代企业数字化转型的新利器。华为云的ROMA Connect作为企业级的融合集成服务 EiPaaS平台,从今年开始也进入了人工智能技术,针对几个主要的企业集…

新一代iPaaS全域融合集成平台ROMA Connect HDC.Cloud 2023内容值得再读!

华为云下一代ROMA Connect HDC.Cloud 2023 精彩内容摘要: 7月9号 分论坛上嘉宾分享一站式融合集成平台解决的用户痛点、应用场景、新一代全域升级的新特性、以及伙伴分享案例干活 ROMA Connect 展台提供开发者体验全新升级版ROMA Connect的 AI智能集成 HDC.Cloud…

华为OD机试真题 Java 实现【战场索敌】【2023 B卷 100分】,深度优先搜索dfs算法,这眼花缭乱的,你这是“战场索鬼”吧?

目录 专栏导读一、题目描述二、输入描述三、输出描述四、深度优先搜索dfs五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明4、如果增加目标敌人数量K为55、来,上强度 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于…

从零开始 Spring Cloud 4:Nacos

从零开始 Spring Cloud 4:Nacos 图源:laiketui.com Nacos 是 Alibaba 研发的用于 Spring Cloud Alibaba 的服务注册中心组件,符合 Spring Cloud 官方标准,同样被 Spring Cloud 官方接纳,所以我们可以在 Spring Cloud …

FPGA XDMA 中断模式实现 PCIE3.0 测速试验 提供工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案XDMA简介XDMA中断模式QT上位机及其源码 5、vivado工程详解6、上板调试验证7、福利:工程代码的获取 1、前言 PCIE(PCI Express)采用了目前业内流行的点对点串行连接&#xf…

同步和异步的区别

同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是处于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令; 异步,执行完函数或方法后,不必阻塞性地等待返回…

缓存服务使用总结

1、介绍 分布式缓存方案缓存服务搭建 2、分布式缓存方案(重点掌握) 2.1、什么是缓存 通常将数据从数据库中同步一份到内存中,客户端直接从内存中查询数据,减少了和数据库的交互次数,提高查询性能(因为内…

什么是 WebSocket?Java 中如何实现 WebSocket?

什么是 WebSocket?Java 中如何实现 WebSocket? WebSocket 简介 WebSocket 是一种新型的网络协议,它允许客户端和服务器之间进行双向通信,可以实现实时数据交互。WebSocket 协议是基于 HTTP 协议的,使用标准的 TCP 连…

java项目之(超市管理系统ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的超市管理系统。技术交流和部署相关看文章末尾! 目录 开发环境: 后端: 前端: 数据库&…

【MySQL系列】深入学习数据类型

「前言」文章内容大致是数据库的数据类型。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、数据类型分类二、数值类型2.1 tinyint类型2.2 bit类型2.3 小数类型2.3.1 float类型2.3.2 decimal类型 2.4 字符串类型2.4.1 char类型2.4.2 varchar类型2.4.3 …

高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术应用

能源是国民经济发展和人民生活必须的重要物质基础。在过去的200多年里,建立在煤炭、石油、天然气等化石燃料基础上的能源体系极大的推动了人类社会的发展。但是人类在使用化石燃料的同时,也带来了严重的环境污染和生态系统破坏。近年来,世界各…

如何快速又高质量的输出PDF实验报告?

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 PDF文档的打印在很多应用场景中都会被使用到,最为常见的就是实验室信息管理…

rockchip linux Vendor storage 及SN添加

前言 在产品开发过程中,最后都会为产品编辑一个产品编号方便于管理和维护,而SN(Series Number)就是用于产品的生产编号。但是在linux中,并没有专门管理串码的驱动。 Vendor storage 是rockchip 被设计用来存储 SN,MAC,LAN,BT 等 vendor data。特征如下: 唯一的访问…

一些有意思的SCI

Gardner J K, Knopoff L. Is the sequence of earthquakes in Southern California, with aftershocks removed, Poissonian?[J]. Bulletin of the seismological society of America, 1974, 64(5): 1363-1367. [原文] 该论文的abstract只有一个单词:Yes。 目前该论…

MySQL索引使用原则,什么是覆盖索引、索引下堆、离散度……这些概念你弄明白了吗

文章目录 一、索引失效的场景二、列的离散度三、联合索引最左匹配1、什么时候用联合索引2、什么是覆盖索引 四、索引条件下推(ICP) 一、索引失效的场景 MySQL索引失效的场景,什么情况下会造成MySQL索引失效 二、列的离散度 什么是列的离散…

【Nacos】实战之配置中心加载多个配置文件

目录 复习未拆分前的yaml文件拆分配置文件dataSource.yamlmybatis.yamlother.yaml 微服务同时加载多个远程配置文件修改配置文件 复习 导入依赖在子模块里面创建 bootstrap.yaml 文件bootstrap.yaml 文件 添加需要的远程配置信息开始拆分以前的配置信息 未拆分前的yaml文件 拆…