当前位置: 首页 > article >正文

自动化测试实战

http://8.137.19.140:9090/blog_login.htm

账号: lisi

密码: 123456

上面是系统链接

1. 自动化测试的步骤

        1.1 编写Web测试用例

        

        1.2 创建空项目添加依赖

        然后我们创建一个新的java项目(使用maven管理),然后引入我们的配置文件:屏幕截图,驱动管理,selenium库

         <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.9.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>

                1.3 搭建整体的项目框架

        创建驱动对象---所有的测试用例共用一个driver对象

        编写测试用例---按照页面分类,每个页面是一个java文件.页面下所有的用例统一管理

                common(公共部分)

                             -Utils.java --- 创建驱动对象,等待,屏幕截图...

                tests(存放测试用例)

                        -LoginPage.java --- 登录页面的所有用例

                        -ListPage.java --- 列表页面的所有用例

                        -EditPage.java --- 编辑页面的所有用例

                        -DetailPage.java --- 详情页面的所有用例

                image(存放屏幕截图)

                        -2025-2-14

                        -2025-2-15 

                        创建如图

                Utils

        tests和image

        tests详细代码

        LoginPage
package org.xiaobai.test_blog_system.tests;

import dev.failsafe.internal.util.Assert;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.xiaobai.test_blog_system.common.Utils;
//登录页面
public class LoginPage extends Utils {
    public static String url = "http://8.137.19.140:9090/blog_login.html";
    public LoginPage() throws InterruptedException {

        super(url);
    }
    //当前页面是否能够正确载入
    public void logPageRight() throws InterruptedException {
        //通过查看页面元素是否存在来判断当前页面是否正确加载
        driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)"));
        //登录输入框
        driver.findElement(By.cssSelector("body > div.container-login > div"));
//        Thread.sleep(2000);
//        driver.quit();
    }
    //检查登录功能 --成功登录
    public void LoginSuc() throws InterruptedException {
        //定位账号输 入框
        driver.findElement(By.cssSelector("#username")).sendKeys("lisi");
//        Thread.sleep(2000);

        //定位密码输入框
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
//        Thread.sleep(2000);

        //定位提交按钮并点击
        driver.findElement(By.cssSelector("#submit")).click();
//        Thread.sleep(2000);
        //登录成功之后怎么确认?我们在跳转后的页面找一个元素,如果找到了就登录成功.我们也可以用登录前和登录后的url是否一致,标签名字...只要页面元素不一样就能作为测试点
        driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a"));
        //页面标题来检查是否登录成功
        String expect = driver.getTitle();
        //通过断言来进行判断
        assert expect.equals("博客列表页");
//        Thread.sleep(2000);
//        driver.quit();
        driver.navigate().back();

    }
    //测试登录失败
    public void LoginFail() throws InterruptedException {
        //清除输入框里面的信息
        //方法1,clear
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        //方法2,重新刷新refresh
        driver.navigate().refresh();
        //定位账号输 入框
        driver.findElement(By.cssSelector("#username")).sendKeys("lisi123");
//        Thread.sleep(2000);

        //定位密码输入框
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
//        Thread.sleep(2000);

        //定位提交按钮并点击
        driver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(2000);

        //判断是否有弹窗出现
        //获取alert
        Alert alert = driver.switchTo().alert();
        String s = alert.getText();
        assert s.equals("用户不存在");
        alert.accept();
        driver.navigate().back();
//        Thread.sleep(1000);
        driver.quit();
    }
}
                注意事项

                注意,我们什么时候需要切换窗口?当我们打开多个标签页的时候,且测试新的标签页.

如何检查登录成功?

       我们在跳转后的页面找一个元素,如果找到了就登录成功.我们也可以用登录前和登录后的url是否一致,标签名字...只要页面元素不一样就能作为测试点

开启断言功能

如果账号或者密码不对,怎么判断?通过看是否有弹窗: 我们可以参考这篇博客:Selenium之定位浏览器弹窗方法汇总_selnium定位弹窗-CSDN博客

        ListPage

        注意事项

        关于截图问题:

        在处理弹窗处理完成之前我们是不可以进行其他比如截图操作的

        登录状态的用例要保证登录状态.未登录状态的用例要保证未登录状态.因此我们优化一下tests.直接把所有处理的未登录状态放在一个tests里面

        PageByNoLogin

        ListPage修改版本

        EditPage

        

        注意:

        我们的博客编辑区是无法进行交互的,因此我们不能够直接用sendKeys去把值传进去,因为里面我们使用的是第三方插件

        解决方法

        1> 博客内容本身就有,我们写标题即可

        2> 通过键盘操作来实现(很少使用):Actions接口 | Selenium

        步骤:

        1. 鼠标先移到博客内容区域

        2. 双击鼠标把内容删除,鼠标双击内容+键盘delete

        3. 输入内容

其他页面我们后续补充

1.4 将自动化测试补充至测试报告

        

        测试报告没有统一的模板,不同企业的测试报告不同,下面是我们博客系统的测试报告

        


http://www.kler.cn/a/545837.html

相关文章:

  • MG协议转换器:破解暖通设备通讯壁垒的智能钥匙
  • [鸿蒙笔记-基础篇_生命周期篇] Harmony OS
  • HTTP请求Host注入
  • 【原理图PCB专题】自制汉字转码工具,适配Allgero 17版本 Skill
  • 理解WebGPU 中的 GPUDevice :与 GPU 交互的核心接口
  • 图神经网络简介
  • 理解 WebGPU 中的 GPUQueue:GPU 的命令队列
  • 机器学习:朴素贝叶斯
  • 指标+大模型,构建更全、更准、更快的数据分析体验
  • Java中关于JSON的基本使用
  • Linux 系统中,进程间通信机制
  • DedeBIZ系统审计小结
  • 关于多语言商城系统的开发流程
  • 基于Flask的全国婚姻关系数据可视化分析系统的设计与实现
  • Linux CAN编程——SocketCAN读写CAN数据
  • 华为昇腾部署 DeepSeek-R1 (671B) 大模型实战指南
  • ES的典型架构图及其核心组件
  • 网络安全之攻防笔记--web安全攻防
  • 基于Python、使用`pandas`库和`Brightway2`库实现根据Excel表格某一列内容与数据库进行匹配
  • 【Uniapp】关于实现下拉刷新的三种方式