软件测试:结合Selenium和JUnit对登录页面进行测试

前记

        没错,它又来了,期末报告它又来了,它又带着要求走来了......

        反正简而言之就是利用这学期用过的测试工具、学过的测试方法对任意一个登录页面进行测试。所以我一开始就决定利用Selenium、JUnit这两个工具去做。也是找了n多资料和代码,最开始定位是京东的登录页面,可恶的滑动验证码,遂放弃,找了别的页面,,放弃,,

        最后把主意打到了自己之前学习的项目里的登录页面,谁说它不是呢?

代码

        废话不多说,上代码,当然在运行以下代码之前先要安装好跟浏览器版本匹配的驱动。这里不多赘述,有很多帖子详细说了Selenium工具的使用。

package org.example;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.List;
import java.util.concurrent.TimeUnit;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class LoginTest {
    private WebDriver driver;

    @BeforeEach
    public void setUp() {
        System.setProperty("webdriver.chrome.driver", "E:\\Download\\chromedriver-win64\\chromedriver-win64\\chromedriver.exe");
        // 这里的路径要替换成自己下载chromedriver的路径
        driver = new ChromeDriver();
        // 隐式等待
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        // 这个路径是你测试网页的路径  
        driver.get("http://localhost:5173/login");
    }

    @Test
    public void testLoginWithCorrectItems() throws InterruptedException {
        // 利用工具获取网页元素,自己在代码里加个id属性也不是不行(
        WebElement usernameInput = driver.findElement(By.id("username"));
        WebElement passwordInput = driver.findElement(By.id("password"));
        WebElement loginButton = driver.findElement(By.id("btn"));

        usernameInput.sendKeys("xingle1");
        passwordInput.sendKeys("123456");
        loginButton.click();
        Thread.sleep(5000);
        // 断言,判断预期页面与当前页面是否相符合,看自己需求
        assertEquals("http://localhost:5173/article/manage", driver.getCurrentUrl());
    }

    @Test
    public void testLoginWithWrongPassword() throws InterruptedException {
        WebElement usernameInput = driver.findElement(By.id("username"));
        WebElement passwordInput = driver.findElement(By.id("password"));
        WebElement loginButton = driver.findElement(By.id("btn"));

        usernameInput.sendKeys("xingle1");
        passwordInput.sendKeys("654321");
        Thread.sleep(3000);

        loginButton.click();
        WebElement errorMsg = driver.findElement(By.className("el-message__content"));
        assertEquals("登录失败!", errorMsg.getText());
    }

    @Test
    public void testLoginWithEmptyUsername() throws InterruptedException {
        WebElement usernameInput = driver.findElement(By.id("username"));
        WebElement passwordInput = driver.findElement(By.id("password"));
        WebElement loginButton = driver.findElement(By.id("btn"));

        usernameInput.sendKeys("");
        passwordInput.sendKeys("123456");
        loginButton.click();
        Thread.sleep(3000);

        WebElement errorMsg = driver.findElement(By.className("el-form-item__error"));
        assertEquals("请输入用户名", errorMsg.getText());
    }

    @Test
    public void testLoginWithEmptyPassword() throws InterruptedException {
        WebElement usernameInput = driver.findElement(By.id("username"));
        WebElement passwordInput = driver.findElement(By.id("password"));
        WebElement loginButton = driver.findElement(By.id("btn"));

        usernameInput.sendKeys("xingle1");
        passwordInput.sendKeys("");
        loginButton.click();
        Thread.sleep(3000);

        WebElement errorMsg = driver.findElement(By.className("el-form-item__error"));
        assertEquals("请输入密码", errorMsg.getText());
    }

    @Test
    public void testLoginWithBothEmpty() throws InterruptedException {
        WebElement usernameInput = driver.findElement(By.id("username"));
        WebElement passwordInput = driver.findElement(By.id("password"));
        WebElement loginButton = driver.findElement(By.id("btn"));

        usernameInput.sendKeys("");
        passwordInput.sendKeys("");
        loginButton.click();
        Thread.sleep(3000);

        List<WebElement> errorMsgs = driver.findElements(By.className("el-form-item__error"));
        assertEquals("请输入用户名", errorMsgs.get(0).getText());
        assertEquals("请输入密码", errorMsgs.get(1).getText());
    }

    @AfterEach
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }
}

测试用例

        这个地方可以看到我写了六个单元测试,主要是根据具体页面情况而定。

用例编号

用例描述

前置条件

测试数据

预期结果

Test001

账号和密码正确

账号:xingle1
密码:123456

成功登录并重定向到主页

Test002

账号正确密码错误

账号:xingle1
密码:7784915

显示错误提示

Test003

账号错误密码正确

账号:zxx
密码:123456

显示错误提示

Test004

账号和密码均为空

账号:
密码:

登录按钮禁用,无法进行下一步,显示错误信息

Test005

账号为空密码正确

账号:
密码:123456

登录按钮禁用,无法进行下一步,显示错误信息

Test006

账号正确密码为空

账号:xingle1
密码:

登录按钮禁用,无法进行下一步,显示错误信息

结果

正确用户名和密码👇:

后记

        其实说到底就是获取元素+自动操作+断言。

        获取元素的话,就算不是原生HTML,Vue的框架也是可以的,亲测(用的黑马的项目、、。

        现在看起来好小儿科,但是当时还是搞了一下午((、、、、

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值