博客项目自动化测试(一)
1. 确认博客系统的环境搭建
http://49.235.129.183:8080/java109_blog_system/blog_list.html,即可访问我的小项目;
2. 确定测试用例
测试用例如下所示:

3. 关于登录的测试用例
3.1 初始化和退出浏览器
代码如下:
package BlogAutoTests;import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;public class InitAndEndBrowser {static WebDriver webDriver;@BeforeAllstatic void OpenBlogSystem() {webDriver = new ChromeDriver();}@AfterAllstatic void CloseBlogSystem() {webDriver.quit();}
}
2.2 测试登录页面成功
package BlogAutoTests;import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvFileSource;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;import static java.lang.Thread.sleep;public class Tests {static WebDriver webDriver = new ChromeDriver();WebDriver CreateChromeDriver(){WebDriver webDriver = new ChromeDriver();return webDriver;}// 登录测试用例@Testvoid Login() throws InterruptedException {WebDriver webDriver = CreateChromeDriver();webDriver.get("http://49.235.129.183:8080/java109_blog_system/blog_list.html");sleep(3000);//输入用户名webDriver.findElement(By.cssSelector("#username")).sendKeys("smallye");//输入密码webDriver.findElement(By.cssSelector("#password")).sendKeys("111");//点击提交webDriver.findElement(By.cssSelector("#submit")).click();sleep(3000);// 登录成功后,校验是否登陆成功String username = webDriver.findElement(By.cssSelector("body > div.container > div.container-left > div > h3")).getText();if(username.equals("smallye")) {System.out.println("测试通过");} else {System.out.println("测试不通过");}}void DestroyChromeDriver(){webDriver.quit();}}
测试结果如下所示:

2.3 验证当前的url
String cur_url = webDriver.getCurrentUrl();if(cur_url.equals("http://49.235.129.183:8080/java109_blog_system/blog_list.html")) {System.out.println("测试通过");} else {System.out.println("测试不通过");}
结果如下:

2.4 多参数接收修改代码
代码如下:将@test修改为多参数注解
@ParameterizedTest@CsvSource({"'http://49.235.129.183:8080/java109_blog_system/blog_list.html', 'smallye', 'http://49.235.129.183:8080/java109_blog_system/blog_list.html', '111'"})void Login(String url, String username, String expected_jump_url, String password) throws InterruptedException {WebDriver webDriver = CreateChromeDriver();webDriver.get("http://49.235.129.183:8080/java109_blog_system/blog_list.html");sleep(3000);//输入用户名webDriver.findElement(By.cssSelector("#username")).sendKeys(username);//输入密码webDriver.findElement(By.cssSelector("#password")).sendKeys(password);//点击提交webDriver.findElement(By.cssSelector("#submit")).click();sleep(3000);// 登录成功后,校验是否登陆成功String uname = webDriver.findElement(By.cssSelector("body > div.container > div.container-left > div > h3")).getText();if(username.equals("smallye")) {System.out.println("测试通过");} else {System.out.println("测试不通过");}String cur_url = webDriver.getCurrentUrl();if(cur_url.equals(expected_jump_url)) {System.out.println("测试通过");} else {System.out.println("测试不通过");}}
结果如下:

2.5 登录失败测试
当登录失败之后会跳转到新的如下页面:

代码如下:
@Testvoid LoginError() throws InterruptedException {String username = "smallye";String password = "111111";WebDriver webDriver1 = new ChromeDriver();webDriver1.get("http://49.235.129.183:8080/java109_blog_system/blog_list.html");sleep(3000);webDriver1.findElement(By.cssSelector("#username")).sendKeys(username);webDriver1.findElement(By.cssSelector("#password")).sendKeys(password);webDriver1.findElement(By.cssSelector("#submit")).click();sleep(3000);WebElement webElement = webDriver1.findElement(By.cssSelector("body"));
// Assertions.assertEquals( "登录失败! 用户名或者密码错误!",webElement.getText());if(webElement.getText().equals("您输入的用户名或密码不正确!")){System.out.println("测试通过");}else {System.out.println("测试不通过");}}
结果显示测试通过!
将判断实际结果与预期结果的代码转化为断言的格式:代码如下所示:
Assertions.assertEquals( "您输入的用户名或密码不正确!",webElement.getText());
ps:本文就写到这里了,谢谢观看。
相关文章:
博客项目自动化测试(一)
1. 确认博客系统的环境搭建 http://49.235.129.183:8080/java109_blog_system/blog_list.html,即可访问我的小项目; 2. 确定测试用例 测试用例如下所示: 3. 关于登录的测试用例 3.1 初始化和退出浏览器 代码如下: package Blo…...
电商商品API接口系列(商品详情数据)商品比价、数据分析、自营商城上货
电商商品API接口系列中的商品详情数据接口,在商品比价、数据分析以及自营商城上货等方面发挥着重要作用。以下是对这些应用场景的详细分析: 一、商品详情数据接口概述 商品详情数据接口是电商平台上用于提供商品详细信息的API接口。这些接口允许开发者…...
排序算法总结(一)冒泡排序和选择排序
访问www.tomcoding.com网站,学习Oracle内部数据结构,详细文档说明,下载Oracle的exp/imp,DUL,logminer,ASM工具的源代码,学习高技术含量的内容。 冒泡排序 这个算法可以说是排序算法中最著名的…...
伺服电动缸
美国EXLAR原装K系列伺服缸 高精度运动,运动平稳,低噪音,高速度 向下翻动查看更多 力姆泰克伺服电动缸 k系列电动缸采用Exlar滚柱丝杠技术,提供多种不同性能等级的产品,可外配第三方电机。 通用型设计,无…...
深度学习中的logit到底是什么?
1. 问题 在做深度学习的过程中,经常会碰到logit。这个和在学校学的概率有出入,因而想弄明白这到底是个什么参数。 2. 使用logit的原因 定义几率(odds)和 logit 函数的主要原因在于使用了线性空间转换,使得非线性的概…...
idea使用记录
文章目录 1、idea调出maven窗口2、跳转到指定行 1、idea调出maven窗口 首先尝试菜单栏View→Tool Windows→Maven,如果没有maven那很有可能是idea没有识别到这是一个maven项目,此时可以尝试在项目的pom文件上右击,选择“add as maven projec…...
Python - HTTP servers
python的http.server模块用于HTTP服务器的功能,这个模块是python标准库的一部分,不需要pip install。 使用前需要import: import http.server 然后就可以编辑代码,使用此模块提供的接口,实现http server相关功能。 除…...
内网Debian\Ubuntu服务器安装dep包,基于apt-rdepends下载相关依赖
文章目录 背景一、下载依赖二、拷贝到内网三、 使用dpkg安装可能会遇到的问题 背景 由于生产服务器是Debian\Ubuntu系统且在内网环境(不联网),需要使用拷贝deb格式的包使用dpkg的方式进行安装。所以,需要现在联网的环境中将所需的…...
大模型——如何实现超长多轮对话
在自然语言处理的领域中,多轮对话系统是构建智能化交互应用的关键。无论是聊天机器人、虚拟助手,还是客户服务系统,能够保持连贯的对话并记住上下文信息是用户体验的核心。然而,大规模语言模型(如GPT等)的对…...
大数据面试-笔试SQL
一个表table: c_id u_id score;用SQL计算每个班级top5学生的平均分(腾讯) select class_id,avg(score) as score_avg from (select *,row_number() over(partition by class_id order by score desc) as score_rank from table ) t1 where t…...
希尔排序和直接插入排序
因为排序这些比较复杂点我就分几期给大家来讲~~~ 直接插入排序 直接插入排序是一种简单的排序算法,主要用于对少量数据进行排序。其基本思想是将待排序的元素逐个插入到已经排好序的部分中,从而形成一个有序序列。 具体步骤如下: 初始化&…...
IDEA 配置 Git 详解
本文将介绍在IntelliJ IDEA 中如何配置Git 没有安装配置 Git 的可以参考我的这篇文章:安装配置 Git 一、操作环境及准备 1.win 10 2.已安装且配置了Git 3.有Gitee账户 4.安装了IntelliJ IDEA 2023.2.1 5.全程联网 二、配置步骤 2.1 配置git 1.采用全局设置&…...
Docker 部署 Redis 监控系统实战:Redis Exporter 与 Prometheus 完整配置指南
Docker 部署 Redis 监控系统实战:Redis Exporter 与 Prometheus 完整配置指南 文章目录 Docker 部署 Redis 监控系统实战:Redis Exporter 与 Prometheus 完整配置指南一 缓存简述二 redis exporter 部署三 环境变量配置四 修改文件权限五 验证 exporter …...
高级算法设计与分析-MaxFlow网络流基础知识
MaxFlow网络流 1 网络流基础概念 source:源点 sink:终点 Flow:流量 capacity:容量 Residual:残量 Residual Network:残量网络 Augmenting path:增广路径,表示从源点 s 到终点 t 不包含环的路径 Bottleneck capacity:瓶颈容量 2 最大流 2.1 基础概念 2.2 增广路算法 …...
Java项目实战II基于Java+Spring Boot+MySQL的桂林旅游景点导游平台(源码+数据库+文档)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者 一、前言 桂林,以其独特的喀斯特地貌、秀美的自然风光闻名遐迩,每年吸引着无数国内外游…...
C语言-输入输出
实验一:编写一个输出两行自定义字符的 C 程序 一、实验目的 熟悉 C 语言的基本结构和语法。掌握 printf() 函数的使用方法。了解在 Code::Blocks 中编写、编译和运行程序的过程。 二、实验内容 编写一个 C 程序,要求输出两行字符,内容自定…...
如何在GitHub上传自己的项目?(一文看懂,每一步的操作和解决常见错误的方法)
目录 步骤一:准备 Git 环境 1. 安装 Git 2. 配置 Git 步骤二:在 GitHub 创建一个新的仓库 1. 登录到你的 GitHub 账号。 2. 点击右上角的 号,然后选择 New repository。 3. 填写以下信息: 步骤三:将本地项目上…...
数据结构_day1
目录 大纲 1.数据结构基础知识 1.1 什么是数据结构 1.2 数据 1.3 逻辑结构 1.4 存储结构 1.4.1 顺序存储 1.4.2 链式存储 1.4.3 索引存储结构 1.4.4 散列存储 1.5 操作 2.算法基础知识 2.1 什么是算法 2.2 算法的设计 2.3 算法的特性 2.4 评价算法的好坏 大纲 数据结构、算法(理…...
c# using 声明进行资源管理
在 C# 8 中,using 声明引入了一种新的语法,称为 using 声明,它使得开发人员在处理资源时的代码更加简洁和清晰。主要的变化包括 使用声明 和 使用上下文(using declaration) 的引入。 使用语句的简化 在 C# 8 中&…...
Kafka之基本概念
1、Kafka是什么? Kafka是由Scala语言开发的一个多分区、多副本,基于Zookeeper集群协调的系统。 那这个所谓的系统又是什么系统呢? 回答这个问题要从发展的角度来看:起初Kafka的定位是分布式消息系统。但是目前它的定位是一个分布…...
【会议征稿通知 | E3S出版 | EI 、Scopus稳定检索】第十二届能源材料与环境工程国际学术会议(ICEMEE 2026)
第十二届能源材料与环境工程国际学术会议(ICEMEE 2026) 2026 12th International Conference on Energy Materials and Environment Engineering 2026年6月12-14日 | 线上会议 大会官网:www.icemee.net 截稿时间:见官网&#x…...
避坑指南:PyCharm 2023.3 + Anaconda 虚拟环境配置,绕开‘解释器路径选择界面消失’的陷阱
PyCharm 2023.3与Anaconda虚拟环境深度配置指南:从原理到实战避坑 在数据科学和机器学习项目的开发过程中,PyCharm与Anaconda的组合堪称黄金搭档。然而,当PyCharm 2023.3遇到Anaconda虚拟环境配置时,不少开发者会陷入"解释器…...
告别手动描图!用AutoCAD Civil 3D 2024快速搞定两期土方横断面对比(附模板)
告别手动描图!用AutoCAD Civil 3D 2024快速搞定两期土方横断面对比(附模板) 在土木工程领域,土方量计算是项目成本控制与进度管理的关键环节。传统CAD手动绘制横断面的方式不仅耗时费力,更难以应对设计变更带来的反复修…...
别再乱删C盘文件了!手把手教你用任务管理器和命令行精准清理流氓软件残留
别再乱删C盘文件了!手把手教你用任务管理器和命令行精准清理流氓软件残留 每次打开电脑看到C盘飘红的存储空间,不少用户的第一反应就是打开资源管理器,对着那些看不懂的文件夹和文件按下删除键。这种简单粗暴的操作轻则导致软件异常…...
Perplexity谣言查询实战手册:从输入到验证的7步黄金流程,附可复用提示词模板
更多请点击: https://codechina.net 第一章:Perplexity谣言辟谣查询的底层逻辑与认知前提 Perplexity 并非一种“谣言检测模型”或内置辟谣数据库的独立系统,而是一个基于大语言模型(LLM)增强检索的问答式搜索引擎。其…...
番茄小说下载器:打造个人数字书库的终极解决方案
番茄小说下载器:打造个人数字书库的终极解决方案 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 在数字阅读时代,你是否曾因网络不稳定而中断阅读?是否想…...
如何在Windows上轻松安装安卓应用:APK-Installer完整指南
如何在Windows上轻松安装安卓应用:APK-Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上直接运行安卓应用&am…...
好用的临沂GEO生成式引擎优化公司
在当今数字化时代,互联网的发展日新月异,AI搜索逐渐成为人们获取信息的重要方式。对于企业和个人来说,如何在海量信息中脱颖而出,让自己的产品、品牌、理念被客户第一时间找到,成为了亟待解决的问题。临沂好味来文化传…...
保姆级教程:在Ubuntu 22.04上为DCU-Z100(ZiFang)安装ROCm 4.5.2驱动及完整工具链
国产AI加速卡DCU-Z100(ZiFang)全栈部署指南:从驱动安装到开发环境配置 在人工智能计算领域,国产硬件正逐步崭露头角。DCU-Z100(代号ZiFang)作为一款自主研发的深度学习计算单元,为开发者提供了全…...
cstore_fdw迁移指南:从传统表到列式存储的无缝切换
cstore_fdw迁移指南:从传统表到列式存储的无缝切换 【免费下载链接】cstore_fdw Columnar storage extension for Postgres built as a foreign data wrapper. Check out https://github.com/citusdata/citus for a modernized columnar storage implementation bui…...
