网页聊天——测试报告——Selenium自动化测试
一,项目概括
1.1 项目名称
网页聊天
1.2 测试时间
2024.9
1.3 编写目的
对编写的网页聊天项目进行软件测试活动,揭示潜在问题,总结测试经验
二,测试计划
2.1 测试环境与配置
服务器:云服务器 ubuntu_22
PC机:机械师T58-V
平台:Windows 10
浏览器:Chrome、FireFox、Edge
自动化测试工具:Selenium
2.2 提取测试点
2.3 设计测试用例
所有的测试用例绑定在这个帖子上了,需要自取
Selenium自动化执行测试用例
文件分类-- 功能进行分块
main函数
public static void main(String[] args) throws IOException, InterruptedException {noLoginTest noLogin=new noLoginTest();noLogin.NoLoginOpen();registerTest register_test=new registerTest();register_test.registerTest();LoginTest login_test=new LoginTest();login_test.loginTest();friendListTest friendList_test=new friendListTest();friendList_test.ListTest();addFriendTest addFriendTest =new addFriendTest();addFriendTest.addFriendTest();chatTest chat=new chatTest();chat.chatTest();driver.quit();}
Utils--所有公共模块
public class Utils {public static WebDriver driver;public static WebDriver createDriver(){//创建驱动if(driver!=null){return driver;}WebDriverManager.edgedriver().setup();//自动下载配置驱动程序EdgeOptions edgeOptions=new EdgeOptions();edgeOptions.addArguments("--allow-remote-origins=*");driver=new EdgeDriver(edgeOptions);//用option创建驱动driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));//隐式等待return driver;}public static void getScreenShot(String str) throws IOException {//截图SimpleDateFormat simple1=new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat simple2=new SimpleDateFormat("hhmmssSS");String format = simple1.format(System.currentTimeMillis());String format2 = simple2.format(System.currentTimeMillis());String fileName="./src/test/image/"+format+"/"+str+"-"+format2+".png";File screenshotAs = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(screenshotAs,new File(fileName));//将截图放到新建的文件里}public static String getTime(){//用来做测试数据SimpleDateFormat simple1=new SimpleDateFormat("hh:mm:ss");return simple1.format(System.currentTimeMillis())+"test";}
}
registerTest--注册测试
public void registerFailAll() throws IOException {//注册失败String alertTest = register("zhangsan", "123");assertEquals("用户名被占用!",alertTest);//断言判断alertTest=register("","123");assertEquals("用户名和密码不能为空! ",alertTest);alertTest=register("zhangsan","");assertEquals("用户名和密码不能为空! ",alertTest);alertTest=register("","");assertEquals("用户名和密码不能为空! ",alertTest);}public void registerSucAll() throws IOException {//注册成功String alertTest = register(testUserName, "123");assertEquals("注册成功",alertTest);driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#submit2")).click();alertTest=register(testUserName+1,"123");assertEquals("注册成功",alertTest);}public String register(String username,String password) throws IOException {//注册driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys(username);driver.findElement(By.cssSelector("#password")).sendKeys(password);getScreenShot(getClass().getName());driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.alertIsPresent());Alert alert = driver.switchTo().alert();String text = driver.switchTo().alert().getText();alert.accept();return text;}
loginTest--登录测试
public void LoginFailAll() throws IOException, InterruptedException {//登录失败String alertTest = loginUtil("zhang", "123");assertEquals("用户名或密码错误! ",alertTest);alertTest=loginUtil("zhangsan","1");assertEquals("用户名或密码错误! ",alertTest);alertTest=loginUtil("zhangsan","");assertEquals("当前输入用户名或密码为空! ",alertTest);alertTest=loginUtil("","123");assertEquals("当前输入用户名或密码为空! ",alertTest);alertTest=loginUtil("","");assertEquals("当前输入用户名或密码为空! ",alertTest);}public void LoginSucAll() throws IOException, InterruptedException {//成功loginSucUtil("zhangsan", "123");loginSucUtil("wangwu","123");loginSucUtil("lisi","123");}public void loginSucUtil(String username,String password) throws IOException, InterruptedException {driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys("zhangsan");driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));getScreenShot(getClass().getName());//截图最好放在最后一步,不然容易卡driver.navigate().back();}public String loginUtil(String username,String password) throws IOException, InterruptedException {driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys(username);driver.findElement(By.cssSelector("#password")).sendKeys(password);driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.alertIsPresent());String text = driver.switchTo().alert().getText();driver.switchTo().alert().accept();getScreenShot(getClass().getName());return text;}
登录和注册的自动化效果展示
friendListTest--主页和好友列表测试
主要检查主页点击用户是否会跳转到聊天页
好友列表点击是否会跳到聊天页
@Slf4j
public class friendListTest extends Utils {public static WebDriver driver=Utils.createDriver();WebDriverWait wait=new WebDriverWait(driver,Duration.ofSeconds(5));public void ListTest() throws IOException {openWeb();ChatListUI();FriendListUI();}public void openWeb() throws IOException {driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys("lisi");driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-session"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button"));getScreenShot(getClass().getName());log.info("打开主页");}public void ChatListUI() throws IOException {wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));driver.findElement(By.cssSelector("#session-list"));//String friendName = driver.findElement(By.cssSelector("#session-list > li:nth-child(1) > h3")).getText();driver.findElement(By.cssSelector("#session-list > li:nth-child(1) > h3")).click();String friendChat = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();assertEquals(friendName,friendChat);//断言一下getScreenShot(getClass().getName());friendName = driver.findElement(By.cssSelector("#session-list > li:nth-child(2) > h3")).getText();driver.findElement(By.cssSelector("#session-list > li:nth-child(2) > h3")).click();friendChat = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();assertEquals(friendName,friendChat);//断言一下getScreenShot(getClass().getName());friendName = driver.findElement(By.cssSelector("#session-list > li:nth-child(3) > h3")).getText();driver.findElement(By.cssSelector("#session-list > li:nth-child(3) > h3")).click();friendChat = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();assertEquals(friendName,friendChat);//断言一下getScreenShot(getClass().getName());log.info("主页用户点击切换到聊天测试");}public void FriendListUI() throws IOException {//查看是否点击可以跳转driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();driver.findElement(By.cssSelector("#friend-list"));String friendName = driver.findElement(By.cssSelector("#friend-list > li:nth-child(1)")).getText();driver.findElement(By.cssSelector("#friend-list > li:nth-child(1)")).click();String friendChat = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();assertEquals(friendName,friendChat);//断言一下getScreenShot(getClass().getName());log.info("好友列表点击跳转测试");}
addFriendTest--搜索好友,发送申请,新好友聊天测试
主页加载完整
搜索好友功能测试
发送申请功能测试
收到申请测试
同意申请,拒绝申请测试
新好友聊天测试
public class addFriendTest extends Utils {public static WebDriver driver=Utils.createDriver();public String addRequest=getTime()+"addFriend";WebDriverWait wait=new WebDriverWait(driver, Duration.ofSeconds(5));public void addFriendTest() throws IOException {openWeb();addFriendSend(registerTest.testUserName);//搜索刚注册的账号addFriendAccept(registerTest.testUserName);addFriendChat();addFriendSend("test");//模糊搜索addFriendSend("0000");addFriendSend("");addFriendSend(" ");addFriendSend("lisi");//搜本人}public void openWeb() throws IOException {driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys("lisi");driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-session"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button"));getScreenShot(getClass().getName());System.out.println("加好友UI");}public void addFriendSend(String user) throws IOException {//搜索刚刚注册的账号driver.findElement(By.cssSelector("#userNmae")).clear();driver.findElement(By.cssSelector("#userNmae")).sendKeys(user);driver.findElement(By.cssSelector("#sumbit")).click();
// driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div"));try{//查看搜到的用户是否正确
// System.out.println(registerTest.testUserName+"查看搜到的用户是否正确");
// assertEquals(register_test.testStr,driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div[2]/div/span")).getText());driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div>input")).sendKeys(addRequest);driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div:nth-child(1) > button")).click();assertEquals(driver.switchTo().alert().getText(),"添加成功");driver.switchTo().alert().accept();getScreenShot(getClass().getName());System.out.println("添加好友请求发送成功");}catch (Exception e){System.out.println("没找到好友:"+user);}}public void addFriendAccept(String user) throws IOException {//切号//登录聊天对象账号查看短信发送情况driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();
// System.out.println(receiver+" login");driver.findElement(By.cssSelector("#userName")).sendKeys(user);driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();System.out.println("切号查看请求是否正确");//提示好友申请发来了driver.findElement(By.cssSelector("#session-list > li"));//发送申请的对象是对的assertEquals("lisi",driver.findElement(By.cssSelector("#session-list > li > h3")).getText());//发送申请的话是对的,因为展示的是部分内容所以不能断言
// assertEquals(addRequest,driver.findElement(By.cssSelector("#session-list > li > p")).getText());//接受申请driver.findElement(By.cssSelector("#session-list > li > button:nth-child(3)")).click();//添加成功提示正确assertEquals("添加成功",driver.switchTo().alert().getText());driver.switchTo().alert().accept();System.out.println("添加好友成功");getScreenShot(getClass().getName());}public void addFriendChat() throws IOException {System.out.println("发短信测试");//测试新好友发短信//找到列表里的那个driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();//可以Xpath选择好友列表页的指定对象driver.findElement(By.xpath("//ul[@id='friend-list']/li[h4[text()='"+"lisi"+"']]")).click();//点击发短信String testChat = getTime();//点击聊天输入框driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea")).click();//发送方String sender = driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user")).getText();//接收方String receiver = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea")).sendKeys(testChat);driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button")).click();driver.navigate().refresh();driver.findElement(By.cssSelector("#session-list > li:first-child")).click();String checkTest = driver.findElement(By.cssSelector("div.message-show div.message:last-child div.box p")).getText();assertEquals(testChat,checkTest);getScreenShot(getClass().getName());}
chat---给好友发短信和接收短信的功能测试
测发送不同的内容
测试能否接收到
public class chatTest extends Utils {WebDriver driver=Utils.createDriver();WebDriverWait wait=new WebDriverWait(driver, Duration.ofSeconds(5));public void chatTest() throws IOException {driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys(testUserName);//发送方driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));//发短信功能,选择最上面的聊天对象,编辑,发送,刷新(必须,加载新短信)重新选择最上面的聊天对象,// 选择最下面最新的短信,注意父类包含多个子类情况下,可以问ai
// String testChat = getTime();
// System.out.println(testChat);
// System.out.println(testChat);//点击好友列表第一位driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();driver.findElement(By.cssSelector("#friend-list > li:nth-child(1)")).click();chat("哈哈哈哈");chat("hhhhha");chat("111112");chat("!@#$%^&*蛤ha");String longStr ="在思想上,我具有较高的政治觉悟,积极向党组织靠拢,始终保持着进取之心,以坚定的信念追求进步。 在学习上,我态度严谨认真,勤奋刻苦。凭借不懈的努力,连续两年荣获国家励志奖学金,并且在英语赛事中多次获奖,扎实的专业功底让我能够自信地应对各种学业挑战。";String receiver=chat(longStr);driver.navigate().back();//退出登录checkMessage(longStr,receiver);//检查短信是否收到}public String chat(String message) throws IOException {//发送短信并返回接受方driver.findElement(By.cssSelector("#session-list > li")).click();//找到好友列表第一个,点击聊天并记录String receiver = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();//编辑短信发送,并返回接受短信的用户driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea")).sendKeys(message);driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button")).click();log.info("发送短信并刷新");return receiver;}public void checkMessage(String message,String receiver) throws IOException {//登录接收方账号,检查短信是否正确driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys(receiver);driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();//点击好友列表driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();//可以Xpath选择好友列表页的指定对象driver.findElement(By.xpath("//ul[@id='friend-list']/li[h4[text()='"+testUserName+"']]")).click();//报错无效选择器,前端找到对应的元素后再次查找发现是元素不可交互导致的log.info("切换账号查看短信是否收到");String test2 = driver.findElement(By.cssSelector("div.message-show div.message:last-child div.box p")).getText();//查看短信assertEquals(message,test2);//断言一下getScreenShot(getClass().getName());log.info("短信成功收到");}
noLoginTest--没有登录测试
查看没有登录直接访问是否会强制返回
public class noLoginTest {public void NoLoginOpen() throws IOException {WebDriver driver= Utils.createDriver();driver.get("http://localhost:8080/client.html");WebDriverWait wait=new WebDriverWait(driver, Duration.ofSeconds(5));wait.until(ExpectedConditions.alertIsPresent());assertEquals("当前用户未登录!",driver.switchTo().alert().getText());driver.switchTo().alert().accept();getScreenShot(getClass().getName());}
}
整个自动化测试展示
网页自动化测试
相关文章:

网页聊天——测试报告——Selenium自动化测试
一,项目概括 1.1 项目名称 网页聊天 1.2 测试时间 2024.9 1.3 编写目的 对编写的网页聊天项目进行软件测试活动,揭示潜在问题,总结测试经验 二,测试计划 2.1 测试环境与配置 服务器:云服务器 ubuntu_22 PC机&am…...

mysql5.7常用操作命令手册
文章目录 前言一、关闭mysql服务1.mha节点,关闭MHA高可用2.主节点,摘掉vip,停掉mysql服务3.从节点,停掉mysql服务 二、启动mysql1.启动数据库顺序2.主节点,登陆数据库检查主库状态,将主库改成读写状态3.从节点启动配置数据库&…...

前端组件库Element UI 的使用
一、准备工作 1.确保安装了开发软件 VS Code(此处可查阅安装 VS Code教程),确保相关插件安装成功 2.安装Node.js 和创建Vue项目(此处可查阅安装创建教程) 3.成功在VS Code运行一个Vue项目(此处可查阅运行…...

【C++ 基础数学 】2121. 2615相同元素的间隔之和|1760
本文涉及的基础知识点 基础数学 LeetCode2121. 相同元素的间隔之和 难度分:1760 令2165,和此题几乎相等。 给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。 arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地,arr[i] 和…...

从手动测试菜鸟,到自动化测试老司机,实现自动化落地
虽然许多伙伴是一个测试老人了,但是基本上所有的测试经验都停留在手工测试方面,对于自动化测试方面的实战经验少之又少。 其实,究其原因:一方面是,自动化方面不求上进,觉得会手工测试就可以了,自…...

docker zookeeper集群启动报错:Cannot open channel to * at election address /ip:3888
下面几点需要注意的: 1、确认在每个$zookeeper_home/data/myid中有对应数字 2、是否关闭防火墙:systemctl stop firewalld,systemctl disable firewalld 3、zoo.cfg中的server需要写成以下形式的: 假如有两台机器,1…...

【Linux探索学习】第一弹——Linux的基本指令(上)——开启Linux学习第一篇
前言: 在进入Linux学习之前,我们首先要先做好以下两点:1、已经基本掌握C语言或C,2、已经配置好了Linux的环境,做完以上两点后我们就开始Linux的学习,今天我们首先要学习的就是Linux中最基础的操作ÿ…...

3.Vue2结合element-ui实现国际化多语言i18n
1.安装vue-i18n npm install vue-i18n8.2.1说明:Vue2使用vue-i18n是8.x,Vue3使用的版本是9.x以上,使用错了会导致报错 2.创建多语言文件 在src/下创建src/lang/langs/zh.js和src/lang/langs/en.js两个文件,里面内容如下&#x…...

整数二分算法和浮点数二分算法
整数二分算法和浮点数二分算法 二分 现实中运用到二分的就是猜数字的游戏 假如有A同学说B同学所说数的大小,B同学要在1~100中间猜中数字65,当B同学每次说的数都是范围的一半时这就算是一个二分查找的过程 二分查找的前提是这个数字序列要有单调性 基…...

智能回收箱的功能和使用步骤介绍
智能回收箱是现代城市环保与资源循环利用领域的一项创新技术,它通过集成各种智能化功能,提高了垃圾回收的效率和准确性,促进了垃圾分类与减量。随着全球对环境保护意识的增强和智慧城市概念的推广,智能回收箱的发展前景非常广阔&a…...

Remix在SPA模式下,出现ErrorBoundary错误页加载Ant Design组件报错,不能加载样式的问题
Remix是一个既能做服务端渲染,又能做单页应用的框架,如果想做单页应用,又想学服务端渲染,使用Remix可以降低学习成本。最近,在学习Remix的过程中,遇到了在SPA模式下与Ant Design整合的问题。 我用Remix官网…...

ADB ROOT开启流程
开启adb root 选项后,执行如下代码: packages/apps/Settings/src/com/android/settings/development/AdbRootPreferenceController.java mADBRootService new ADBRootService(); Override public boolean onPreferenceChange(Preference preference…...

传输层协议 —— TCP协议(上篇)
目录 1.认识TCP 2.TCP协议段格式 3.可靠性保证的机制 确认应答机制 超时重传机制 连接管理机制 三次握手 四次挥手 1.认识TCP 在网络通信模型中,传输层有两个经典的协议,分别是UDP协议和TCP协议。其中TCP协议全称为传输控制协议(Tra…...

YOLOv8改进,YOLOv8的Neck替换成AFPN(CVPR 2023)
摘要 多尺度特征在物体检测任务中对编码具有尺度变化的物体非常重要。多尺度特征提取的常见策略是采用经典的自上而下和自下而上的特征金字塔网络。然而,这些方法存在特征信息丢失或退化的问题,影响了非相邻层次的融合效果。一种渐进式特征金字塔网络(AFPN),以支持非相邻…...

学习大数据DAY59 全量抽取和增量抽取实战
目录 需求流程: 需求分析与规范 作业 作业2 需求流程: 全量抽取 增量抽取 - DataX Kettle Sqoop ... 场景: 业务部门同事或者甲方的工作人员给我们的部门经理和你提出了新的需 求 流程: 联系 > 开会讨论 > 确认需求 > 落地 需求文档( 具体…...

YOLOv8——测量高速公路上汽车的速度
引言 在人工神经网络和计算机视觉领域,目标识别和跟踪是非常重要的技术,它们可以应用于无数的项目中,其中许多可能不是很明显,比如使用这些算法来测量距离或对象的速度。 测量汽车速度基本步骤如下: 视频采集&#x…...

在线相亲交友系统:寻找另一半的新方式
在这个快节奏的时代里,越来越多的单身男女发现,传统意义上的相亲方式已经难以满足他们的需求。与此同时,互联网技术的迅猛发展为人们提供了新的社交渠道——在线相亲交友系统作者h17711347205。本文将探讨在线相亲交友系统如何成为一种寻找另…...

MySQL 中存储过程参数的设置与使用
《MySQL 中存储过程参数的设置与使用》 在 MySQL 数据库中,存储过程是一组预先编译好的 SQL 语句集合,可以接受参数并返回结果。使用存储过程可以提高数据库的性能和可维护性,同时也可以减少网络流量和代码重复。那么,如何在 MyS…...

2k1000LA 调试HDMI
问题: 客户需要使用HDMI 接口,1080p 的分辨率。 ---------------------------------------------------------------------------------------------------------------- 这里需要看看 龙芯派的 demo 版 的 硬件上的连接。 硬件上: 官方的demo 板 , dvo1 应该是 HDMI的…...

24年蓝桥杯及攻防世界赛题-MISC-1
2 What-is-this AZADI TOWER 3 Avatar 题目 一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息?隐藏内容即flag 解题 ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/outguess] └─$ outguess -r 035bfaa85410429495786d8ea6ecd296.jpg flag1.txt Reading 035bf…...

前端项目代码开发规范及工具配置
在项目开发中,良好的代码编写规范是项目组成的重要元素。本文将详细介绍在项目开发中如何集成相应的代码规范插件及使用方法。 项目规范及工具 集成 EditorConfig集成 Prettier1. 安装 Prettier2. 创建 Prettier 配置文件3. 配置 .prettierrc4. 使用 Prettier 集成 …...

【JVM】JVM执行流程和内存区域划分
文章目录 是什么JVM 执行流程内存区域划分堆栈程序计数器元数据区经典笔试题 是什么 Java 虚拟机 JDK,Java 开发工具包JRE,Java 运行时环境JVM,Java 虚拟机 JVM 就是 Java 虚拟机,解释执行 Java 字节码 JVM 执行流程 编程语言…...

Python | 读取.dat 文件
写在前面 使用matlab可以输出为 .dat 或者 .mat 形式的文件,之前介绍过读取 .mat 后缀文件,今天正好把 .dat 的读取也记录一下。 读取方法 这里可以使用pandas库将其作为一个dataframe的形式读取进python,数据内容格式如下,根据…...

信息技术的变革与未来发展的思考
信息技术的变革与未来发展的思考 在21世纪,信息技术(IT)正在以前所未有的速度推动社会、经济、文化的深刻变革。无论是人工智能、大数据,还是云计算、物联网,信息技术的发展已经渗透到了各个行业,彻底改变…...

融会贯通记单词,绝对丝滑,一天轻松记几百
如果我将flower(花)、flat(公寓)、floor(地板)、plane(飞机)几个单词放在一起,你会怎么来记忆这样的一些单词呢? 我们会发现,我们首先可以将plane去掉,因为它看上去几乎就是一个异类。这样,我们首先就可以将…...

【计算机视觉】YoloV8-训练与测试教程
✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 制作数据集 Labelme 数据集 数据集选用自己标注的,可参考以下:…...

响应式布局-媒体查询父级布局容器
1.响应式布局容器 父局作为布局容器,配合自己元素实现变化效果,原理:在不通过屏幕下面吗,通过媒体查询来改变子元素的排列方式和大小,从而实现不同尺寸屏幕下看到不同的效果。 2.响应尺寸布局容器常见宽度划分 手机-…...

Android APN type 配置和问题
问题/疑问 如果APN配置了非法类型(代码没有定义的),则APN匹配加载的时候最终结果会是空类型。 那么到底是xml解析到数据库就是空type呢?还是Java代码匹配的时候映射是空的呢? Debug Log 尝试将原本的APN type加入ota或者新建一条ota type APN,检查log情况。 //Type有…...

前端mock了所有……
目录 一、背景描述 二、开发流程 1.引入Mock 2.创建文件 3.需求描述 4.Mock实现 三、总结 一、背景描述 前提: 事情是这样的,老板想要我们写一个demo拿去路演/拉项目,有一些数据,希望前端接一下,写几个表格&a…...

fiddler抓包10_列表显示请求方法
① 请求列表表头,鼠标悬停点击右键弹出选项菜单。 ② 点击“Customize columns”(定制列)。 ③ 弹窗中,“Collection”下拉列表选择“Miscellaneous”(更多字段)。 ④ “Field Name”选择“RequestMethod”…...