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

自动化测试实战

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 概述 用途&#xff1a;专为处理纯文本设计&#xff0c;适合大文本编辑和简单文本显示&#xff08;如日志、代码编辑器&#xff09;。 特点&#xff1a;相比QTextEdit&#xff0c;轻量高效&#xff0c;支持快速加载和滚动大文件&#xff0c;默认不支持富文本。 …...

AWS SES 邮件服务退信/投诉处理与最佳实践指南

在使用 AWS SES 发送邮件时,合理处理退信和投诉是维护发送声誉的关键。本文将详细介绍 SES 中的退信/投诉处理机制以及相关最佳实践。 一、退信处理机制 © ivwdcwso (ID: u012172506) 1.1 退信类型 在 SES 中,退信分为两种类型: 硬退信(Hard Bounce) 永久性错误,如无效…...

理解WebGPU 中的 GPUAdapter :连接浏览器与 GPU 的桥梁

在 WebGPU 开发中&#xff0c; GPUAdapter 是一个至关重要的对象&#xff0c;它作为浏览器与 GPU 之间的桥梁&#xff0c;为开发者提供了请求 GPU 设备、查询 GPU 特性以及获取适配器信息的能力。本文将详细介绍 GPUAdapter 的核心属性和方法&#xff0c;并通过实际代码…...

rpx和px混用方案

&#xff08;1&#xff09;创建一个全局的样式配置文件&#xff1a; // 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设计 无人机可搭载高分辨率光学相机、激光雷达等测绘设备&#xff0c;对目标区域进行全方位、多角度的航拍作业。通过对采集到的影像数据进行导入处理&#xff0c;运用复杂的图像识别算法与三维重建技术&#xff0c;构建出云端实景3D模型&#xff0c;在实景3D模型中进…...

太速科技-616-基于6U VPX XCVU9P+XCZU7EV的双FMC信号处理板卡

基于6U VPX XCVU9PXCZU7EV的双FMC信号处理板卡 一、板卡概述 板卡基于6U VPX标准结构&#xff0c;包含一个XCVU9P 高性能FPGA&#xff0c;一片XCZU7EV FPGA&#xff0c;用于 IO扩展接口&#xff0c;双路HPC FMC扩展高速AD、DA、光纤接口等。是理想应用于高性能数字计算&…...

国产鲲鹏920+欧拉+达梦

1&#xff0c;访问达梦官网 产品下载-达梦数据 1.1&#xff0c;官网没有欧拉的版本&#xff1b; 1.2&#xff0c;拨打客服热线&#xff0c;联系售前单独获取试用版 2&#xff0c;创建鲲鹏920欧拉环境&#xff1a; 2.1&#xff0c;阿里云&#xff1a;没有arm系统 2.2&#xf…...

LeetCode--146. LRU 缓存【Golang中的list】

146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c…...

查看notebook的jupyter token

如果你忘记了jupyter的token&#xff0c;那么你可以命令行登录后台&#xff0c;查看。 jupyter notebook list 把token复制下&#xff0c;贴到网站上即可。jupyter登录页已经提示了。...

vue+springboot+webtrc+websocket实现双人音视频通话会议

前言 最近一些时间我有研究&#xff0c;如何实现一个视频会议功能&#xff0c;但是找了好多资料都不太理想&#xff0c;最终参考了一个文章 WebRTC实现双端音视频聊天&#xff08;Vue3 SpringBoot&#xff09; 只不过&#xff0c;它的实现效果里面只会播放本地的mp4视频文件&…...

什么是高亮环形光源

高亮环形光源是一种常用于机器视觉、工业检测和光学测量的照明设备。其特点是光线均匀、亮度高,并且呈环形分布,能够为被检测物体提供均匀的照明,减少阴影和反光,提高图像采集的质量。 主要特点: 环形设计:光源呈环形分布,适合安装在镜头周围,能够为物体提供均匀的照明…...

2025年3月一区SCI-混沌进化优化算法Chaotic evolution optimization-附Matlab免费代码

引言 本期介绍了一种基于混沌动力学的元启发式算法-混沌进化优化算法Chaotic evolution optimization&#xff0c;CEO。CEO的主要灵感来源于二维离散记忆映射的混沌演化过程。通过利用记忆映射的超混沌特性&#xff0c;对CEO算法进行数学建模&#xff0c;为进化过程引入随机搜…...

51单片机俄罗斯方块开机动画

/************************************************************************************************************** * 名称&#xff1a;Game_Star * 功能&#xff1a;开机动画 * 参数&#xff1a;NULL * 返回&#xff1a;NULL ******************************************…...

RK3588开发板部署DeepSeek-R1-Distill-Qwen-1.5B的步骤及问题

目录 引言 为什么要做端侧部署 技术发展层面 应用需求层面 开发与成本层面 产业发展层面 模型选择 模型蒸馏 模型转换 量化选择 量化方式 模型大小 计算效率 模型精度 测试 测试程序编译 测试结果 结语 引言 最近DeepSeek已经成为一个非常热门的话题&#x…...

网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施

网络安全 | 安全信息与事件管理&#xff08;SIEM&#xff09;系统的选型与实施 一、前言二、SIEM 系统的功能概述2.1 数据收集与整合2.2 实时监控与威胁检测2.3 事件响应与自动化2.4 合规性管理 三、SIEM 系统选型的关键因素3.1 功能需求评估3.2 可扩展性与性能3.3 易用性与可维…...

DeepSeek接口联调(postman版)

第一步&#xff1a;获取API key 获取APIkeys链接https://platform.deepseek.com/api_keys 点击创建 API key 即可免费生成一个key值&#xff0c;别忘记保存。 第二步&#xff1a;找到deepseek官方接口文档 文档地址&#xff1a;https://api-docs.deepseek.com/zh-cn/ 第三步…...

RadASM环境,win32汇编入门教程之三

;运行效果 ;win32汇编环境&#xff0c;RadAsm入门教程之三 ;在这个教程里&#xff0c;我们学一下如何增加控件&#xff0c;比如按钮&#xff0c;其它的控件类似这样增加 ;以下的代码就是在教程一的窗口模版里增加一个按钮控件&#xff0c;可以比较一下&#xff0c;增加了什么内…...

oracle多次密码错误登录,用户锁住或失效

多次输入错误账号查询状态&#xff1a; select username,account_status from dba_users; TEST EXPIRED(GRACE) 密码错误延迟登录&#xff0c;延迟登录还能登录 或者 TEST LOCKED(TIMED) 密码错误锁 TEST EXPIRED(GR…...

HCIA-Datacom笔记3:网络工程

网络工程 网络工程 在信息系统工程方法和完善的组织机构指导下&#xff0c;根据网络应用的需求&#xff0c;按照计算机网络系统的标准、规范和技术&#xff0c;规划设计可行性方案&#xff0c;将计算机网络硬件设备、软件和技术系统地集成在一起&#xff0c;以成为满足用户需…...

2025最权威的AI辅助论文方案解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 全方位提升文本致然度和原创性是降低AIGC率的关键所在&#xff0c;第一步&#xff0c;杜绝直…...

手把手教你为Rockchip Buildroot添加自定义软件包(附CMake/Makefile实例)

手把手教你为Rockchip Buildroot添加自定义软件包&#xff08;附CMake/Makefile实例&#xff09; 在嵌入式Linux开发中&#xff0c;Buildroot因其高度定制化和轻量级特性成为Rockchip平台的热门选择。但当你需要集成自己的驱动程序或应用程序时&#xff0c;官方文档往往显得过于…...

解放双手的明日方舟智能助手:MAA自动化工具完全指南

解放双手的明日方舟智能助手&#xff1a;MAA自动化工具完全指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitco…...

高效视频下载解决方案:VideoDownloadHelper插件完全指南

高效视频下载解决方案&#xff1a;VideoDownloadHelper插件完全指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 在当今数字时代&#xff…...

基于容器化技术的高交互蜜罐系统设计与实战部署

1. 项目概述&#xff1a;一个高交互的蜜罐系统最近在整理安全研究工具链时&#xff0c;又翻出了beelzebub这个项目。它不是一个新面孔&#xff0c;但在开源蜜罐领域&#xff0c;其设计理念和实现方式一直让我觉得很有意思。简单来说&#xff0c;beelzebub是一个用 Go 语言编写的…...

51单片机通过继电器模块实现智能灯光控制

1. 从点灯到智能控制&#xff1a;51单片机与继电器的完美组合 记得我第一次用51单片机点亮LED时&#xff0c;那种成就感至今难忘。但后来发现&#xff0c;单纯的点灯只是电子世界的"Hello World"&#xff0c;真正的乐趣在于让灯光变得"聪明"起来。这就是为…...

Horos终极指南:免费开源的macOS医疗影像查看器

Horos终极指南&#xff1a;免费开源的macOS医疗影像查看器 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is based upon Osir…...

AI工具搭建自动化视频生成Wipster

# 聊聊Wipster&#xff1a;当AI开始帮你处理视频生成的脏活累活 说实话&#xff0c;做了这么多年Python开发&#xff0c;视频处理一直是个让人头疼的领域。你想想&#xff0c;要处理一小时的视频素材&#xff0c;光渲染就得等半天&#xff0c;更别提什么字幕、转场、多语言配音…...

Android串口开发避坑实录:绕过系统签名,用‘山寨’SerialPort类实现读写

Android串口开发实战&#xff1a;巧用类加载机制绕过系统签名限制 在物联网和嵌入式开发领域&#xff0c;串口通信一直是硬件交互的基石。当我们需要在Android设备上实现与各类传感器、控制器或传统工业设备的通信时&#xff0c;串口往往是最直接的选择。然而&#xff0c;Andro…...

[具身智能-607]:树莓派 4B/5 或 RK3568/RK3588 开发板的电机电气接口与通信协议

一、树莓派 4B / 5&#xff08;Raspberry Pi 4B/5&#xff09;1. 核心电气接口&#xff08;电机控制&#xff09;GPIO 接口&#xff08;40-pin&#xff09;电平&#xff1a;3.3V&#xff08;严禁直接 5V&#xff09;数量&#xff1a;~28 个通用 GPIO&#xff0c;支持 PWM、UART…...