自动化测试实战
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:网络工程
网络工程 网络工程 在信息系统工程方法和完善的组织机构指导下,根据网络应用的需求,按照计算机网络系统的标准、规范和技术,规划设计可行性方案,将计算机网络硬件设备、软件和技术系统地集成在一起,以成为满足用户需…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
