自动化测试实战
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,cleardriver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();//方法2,重新刷新refreshdriver.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);//判断是否有弹窗出现//获取alertAlert 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://8.137.19.140:9090/blog_login.htm 账号: lisi 密码: 123456 上面是系统链接 1. 自动化测试的步骤 1.1 编写Web测试用例 1.2 创建空项目添加依赖 然后我们创建一个新的java项目(使用maven管理),然后引入我们的配置文件:屏幕截图,驱动管理,selenium库 <dependency…...
qt QPlainTextEdit总结
QPlainTextEdit 概述 用途:专为处理纯文本设计,适合大文本编辑和简单文本显示(如日志、代码编辑器)。 特点:相比QTextEdit,轻量高效,支持快速加载和滚动大文件,默认不支持富文本。 …...
AWS SES 邮件服务退信/投诉处理与最佳实践指南
在使用 AWS SES 发送邮件时,合理处理退信和投诉是维护发送声誉的关键。本文将详细介绍 SES 中的退信/投诉处理机制以及相关最佳实践。 一、退信处理机制 © ivwdcwso (ID: u012172506) 1.1 退信类型 在 SES 中,退信分为两种类型: 硬退信(Hard Bounce) 永久性错误,如无效…...
理解WebGPU 中的 GPUAdapter :连接浏览器与 GPU 的桥梁
在 WebGPU 开发中, GPUAdapter 是一个至关重要的对象,它作为浏览器与 GPU 之间的桥梁,为开发者提供了请求 GPU 设备、查询 GPU 特性以及获取适配器信息的能力。本文将详细介绍 GPUAdapter 的核心属性和方法,并通过实际代码…...
rpx和px混用方案
(1)创建一个全局的样式配置文件: // styles/variables.scss :root {// 基础字体大小--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;// 响应式间距--spacing-xs: 5px;--spacing-sm: 10px;--spacing-…...
光伏设计软件分类:无人机、Unity3D引擎齐上阵
无人机3D设计 无人机可搭载高分辨率光学相机、激光雷达等测绘设备,对目标区域进行全方位、多角度的航拍作业。通过对采集到的影像数据进行导入处理,运用复杂的图像识别算法与三维重建技术,构建出云端实景3D模型,在实景3D模型中进…...
太速科技-616-基于6U VPX XCVU9P+XCZU7EV的双FMC信号处理板卡
基于6U VPX XCVU9PXCZU7EV的双FMC信号处理板卡 一、板卡概述 板卡基于6U VPX标准结构,包含一个XCVU9P 高性能FPGA,一片XCZU7EV FPGA,用于 IO扩展接口,双路HPC FMC扩展高速AD、DA、光纤接口等。是理想应用于高性能数字计算&…...
国产鲲鹏920+欧拉+达梦
1,访问达梦官网 产品下载-达梦数据 1.1,官网没有欧拉的版本; 1.2,拨打客服热线,联系售前单独获取试用版 2,创建鲲鹏920欧拉环境: 2.1,阿里云:没有arm系统 2.2…...
LeetCode--146. LRU 缓存【Golang中的list】
146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,…...
查看notebook的jupyter token
如果你忘记了jupyter的token,那么你可以命令行登录后台,查看。 jupyter notebook list 把token复制下,贴到网站上即可。jupyter登录页已经提示了。...
vue+springboot+webtrc+websocket实现双人音视频通话会议
前言 最近一些时间我有研究,如何实现一个视频会议功能,但是找了好多资料都不太理想,最终参考了一个文章 WebRTC实现双端音视频聊天(Vue3 SpringBoot) 只不过,它的实现效果里面只会播放本地的mp4视频文件&…...
什么是高亮环形光源
高亮环形光源是一种常用于机器视觉、工业检测和光学测量的照明设备。其特点是光线均匀、亮度高,并且呈环形分布,能够为被检测物体提供均匀的照明,减少阴影和反光,提高图像采集的质量。 主要特点: 环形设计:光源呈环形分布,适合安装在镜头周围,能够为物体提供均匀的照明…...
2025年3月一区SCI-混沌进化优化算法Chaotic evolution optimization-附Matlab免费代码
引言 本期介绍了一种基于混沌动力学的元启发式算法-混沌进化优化算法Chaotic evolution optimization,CEO。CEO的主要灵感来源于二维离散记忆映射的混沌演化过程。通过利用记忆映射的超混沌特性,对CEO算法进行数学建模,为进化过程引入随机搜…...
51单片机俄罗斯方块开机动画
/************************************************************************************************************** * 名称:Game_Star * 功能:开机动画 * 参数:NULL * 返回:NULL ******************************************…...
RK3588开发板部署DeepSeek-R1-Distill-Qwen-1.5B的步骤及问题
目录 引言 为什么要做端侧部署 技术发展层面 应用需求层面 开发与成本层面 产业发展层面 模型选择 模型蒸馏 模型转换 量化选择 量化方式 模型大小 计算效率 模型精度 测试 测试程序编译 测试结果 结语 引言 最近DeepSeek已经成为一个非常热门的话题&#x…...
网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施
网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施 一、前言二、SIEM 系统的功能概述2.1 数据收集与整合2.2 实时监控与威胁检测2.3 事件响应与自动化2.4 合规性管理 三、SIEM 系统选型的关键因素3.1 功能需求评估3.2 可扩展性与性能3.3 易用性与可维…...
DeepSeek接口联调(postman版)
第一步:获取API key 获取APIkeys链接https://platform.deepseek.com/api_keys 点击创建 API key 即可免费生成一个key值,别忘记保存。 第二步:找到deepseek官方接口文档 文档地址:https://api-docs.deepseek.com/zh-cn/ 第三步…...
RadASM环境,win32汇编入门教程之三
;运行效果 ;win32汇编环境,RadAsm入门教程之三 ;在这个教程里,我们学一下如何增加控件,比如按钮,其它的控件类似这样增加 ;以下的代码就是在教程一的窗口模版里增加一个按钮控件,可以比较一下,增加了什么内…...
oracle多次密码错误登录,用户锁住或失效
多次输入错误账号查询状态: select username,account_status from dba_users; TEST EXPIRED(GRACE) 密码错误延迟登录,延迟登录还能登录 或者 TEST LOCKED(TIMED) 密码错误锁 TEST EXPIRED(GR…...
HCIA-Datacom笔记3:网络工程
网络工程 网络工程 在信息系统工程方法和完善的组织机构指导下,根据网络应用的需求,按照计算机网络系统的标准、规范和技术,规划设计可行性方案,将计算机网络硬件设备、软件和技术系统地集成在一起,以成为满足用户需…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
Qwen系列之Qwen3解读:最强开源模型的细节拆解
文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...
OPENCV图形计算面积、弧长API讲解(1)
一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的API…...
MeanFlow:何凯明新作,单步去噪图像生成新SOTA
1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架,旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念,这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换,显…...
【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南
文章目录 📌 前言🧰 一、前期准备✅ 安装 Kali Linux✅ 获取支持监听模式的无线网卡 🛠 二、使用 Kali Linux 进行 WiFi 安全测试步骤 1:插入无线网卡并确认识别步骤 2:开启监听模式步骤 3:扫描附近的 WiFi…...
