自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 selenium UI自动化之数据驱动

1、csv读取到的数据格式以什么样的形式,具体数据格式示例:{‘机构名称’: [‘大道展览(北京)有限公司’], ‘机构证件类型’: [‘营业执照(统一社会信用代码)’], ‘证件类型参数’: [‘测试批文一号’]}解决问题2,在主程序中读取到csv文件数,并将涉及到需要填充csv文件数的代码设置成可变化的形式,并采用subTest方式实现以上功能;在设计UI自动化时,需要考虑到如何进行数据驱动的处理,当下比较常见的有DDT,Yaml,关键字驱动,CSV等等作为ui自动化测试用例;

2024-08-01 15:13:43 382

原创 selenium之批量上传文件

【代码】selenium之批量上传文件。

2024-08-01 15:12:03 566

原创 四、Python日志系统之日志文件的备份和删除

接下来,获取当前时间,并再次遍历文件夹中的文件。对于以 backup_ 开头且修改时间超过 7 天的备份文件,使用 os.remove 进行删除,以释放存储空间并保持备份的整洁。对于备份,当当前的日志文件数量超过 RotatingFileHandler 中设置的 backupCount 时,将最早的日志文件进行备份。如果超过,就从最早的文件开始进行备份,通过重命名的方式将其转换为备份文件。对于删除,这里示例为删除超过 7 天的备份日志文件,可以根据实际需求调整时间阈值和删除条件。

2024-07-09 13:09:11 400 1

原创 三、Python日志系统之监控邮件发送

请确保将 SMTP_SERVER、SMTP_PORT、SMTP_USERNAME、SMTP_PASSWORD、EMAIL_FROM 和 EMAIL_TO 替换为你实际的邮件服务器和邮箱地址。这样,当日志文件被修改并包含错误消息时,你会收到邮件通知。当监控到含有 “ERROR” 字符串的日志行时,调用 send_email 方法发送邮件通知。中启动监控程序,监听日志文件,并且每当发现含有 “ERROR” 的日志行时,发送邮件通知。设置了 SMTP 服务器地址、端口、用户名、密码等信息,用于发送邮件。

2024-07-09 13:07:45 383

原创 二、Python日志系统之watchDog监控日志

【代码】二、Python日志系统之watchDog监控日志。

2024-07-09 13:06:25 529

原创 一、Python 日志系统设计之不同级别的系统日志

用于创建和配置日志记录器,并提供了在不同级别记录日志的功能。同时,通过归档设置和格式设置,对日志的存储和展示进行了定制化处理。函数执行主要的测试逻辑。实现一个自定义的日志类。

2024-07-09 12:19:54 276

原创 四、Python使用watchdog库实现监控文件系统的更改

​ 3.观察者observer 将事件处理类和要监控的路径:path_to_monitor 进行关联,当操作系统检测到系统文件发生改变时,会发送给相应的事件给watchdog;​ 4.观察者收到这些事件后,会调用事件处理类对应的方法如:on_modified, on_deleted, on_moved, on_created;部分,首先指定要监视的目录路径(path_to_monitor)。​ 1.先创建观察者observer = Observer();recursive具体说明。

2024-07-09 12:14:49 500

原创 Pytest项目结构和常见问题

2.注册成功后手机号码是否和验证码一致,是否存在重复验证码,验证码不为空,响应状态码是200。#1.先获取到要注册的手机号,然后去使用conftest从数据库中查询是否有改手机号码信息,若有则删除原有手机验证码信息;#2.发送验证码,将获取到手机号码传入到请求验证码的接口,该接口返回相关response信息。#6.将验证码和手机号码参数传入到登录接口当中,登录接口返回响应信息,自此完成全流程操作。#3.接收到响应体,先判断响应体状态码是否正常,再判断响应内容是否与手机号码一致,

2024-06-24 14:52:26 673

原创 10.Python迭代器和生成器概念和使用场景

遍历:按照一定的顺序访问或者检查数据结构中的每个元素,可以使用迭代或者其他算法来实现,迭代是遍历的一种实现形式。迭代:是一种通过循环结构重复执行操作来逐步处理序列元素的方式;

2024-06-24 14:46:09 351

原创 selenium之批量删除按钮操作

出现 IndexError: list index out of range 错误的原因是,在重新查找元素后,delete_buttons 的长度可能发生了变化,导致 i 超出列表的范围。每次点击后会重新查找删除按钮,确保引用是最新的。在这个改进版本中,如果捕获到 StaleElementReferenceException,会重新查找元素并检查 i 是否仍在新列表的范围内。三个定位元素,第一个是section,后面两个是删除按钮,先统计删除按有几个,如果大于1个则删除所有且只保留第一个;

2024-06-24 14:37:35 883

原创 selenium前期准备

在此步骤中,服务的初始化是为后续与浏览器驱动的通信做好准备,而启动特定的浏览器驱动程序则是为了能够控制相应的浏览器。c. 浏览器成功打开后,会绑定特定的端口,并将启动后的浏览器视作 WebDriver 的远程服务器(remote server)。e. 浏览器接收到请求的内容后,会执行对应的动作。这样,测试脚本就能够获取到浏览器操作的结果,从而进行后续的判断和处理,例如验证页面元素是否存在、内容是否正确等。ⅰ. 它将用户编写的测试脚本中的操作指令(如点击、输入、获取元素等)转化为浏览器能够理解的命令。

2024-06-24 11:17:20 533

原创 selenium常见难点解决方案

在这个示例中,我们首先找到了勾选框的元素,然后通过检查它的 class 属性来确定是否已经被勾选。如果已经勾选,则执行取消勾选操作;如果未勾选,则执行点击勾选操作。请将代码中的 “Your_Page_URL_Here” 替换为你要操作的页面的 URL,将 “Your_XPath_Here” 替换为勾选框的 XPath 表达式。要在 Selenium 中实现这样的逻辑,你可以首先找到勾选框的元素,然后检查它是否已经被勾选。如果已经勾选,则进行取消勾选操作;如果未勾选,则进行点击勾选操作。

2024-06-14 14:01:09 679

原创 selenium报错:Message: element not interactable

问题描述:页面元素使用的是xpath定位方法,也获取到对应元素,但是在执行自动化时候还是会报:Message: element not interactable。

2024-06-14 11:54:19 661

原创 selenium execute_script常用方法汇总

对于能定位到的元素总是报:Message: element not interactable解决方法如下:driver.execute_script() 是 Selenium WebDriver 中非常强大且灵活的功能,可以用来执行任意的 JavaScript 代码在浏览器上下文中。

2024-06-14 11:39:50 4633

原创 关闭selenium驱动小脚本

在windows系统下,调试过程中会遇到一些浏览器没有关闭的情况,使用一下代码使用对本地的驱动进行关闭操作。

2024-06-14 11:35:23 172

原创 MySQL 事务

MySQL 事务在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。事务用来管理 insert、update、delete 语句一、事务满足的条件:**原子性:**一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

2024-01-24 22:10:25 683

原创 消息中间件基本概念

解耦:它允许不同的应用程序或服务通过发送和接收消息进行通信,而不是直接相互调用,通过消息中间件监控一方是否成功后其他系统依据需求直接订阅即可。异步:将整个流程进行异步发送,也就是说本来顺序执行的程序化流程,异步后可以同时进行操作,互不影响,但保持最终结果一致性;削峰:大量的请求放到队列中,能消费多少依据服务器的处理能力,保证服务器稳定不挂机。1.系统复杂性:多个系统会考虑更多东西,重复消息,消息丢失,消息的顺序。消息队列三个场景:异步,削峰,解耦。

2023-12-06 12:23:36 405

原创 数据迁移或数据测试

数据迁移测试测什么?数据迁移测试,一般遵循三点–正确性,一致性,可用性。以下是测试的一般执行步骤∶1.确定迁移范围确定迁移哪些模块的基础数据2.整理旧系统与新系统的表结构∶找旧系统与新系统数据库表结构的设计文档,来了解表及字段的详细信息3.整理旧系统与新系统的字段匹配,值匹配关系∶4.大体核心流程使用旧数据测试∶核心旧数据套用系统核心流程测试,查看是否有验证bug出现5基础数据测试;1) 基于数据库直接看字段储存的值进行测试2) 基于用户登录前台系统进行查看表所在相应菜单字段展

2023-12-06 12:21:39 154

原创 MySQL基本概念和基础语法

a.stuid=b.stuid and a.stuname=‘赵雷’ and b.courseid=0002#单表删除。

2023-12-06 12:19:41 180

原创 第十章: 异常,线程

进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创。线程:指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多。进程:是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。中是可以有多个线程的,这个应用程序也可以称之为多线程程序。解决线程安全问题的一种方案:同步锁机制。解决线程安全问题的一种方案:Lock锁。finally代码块。

2023-12-06 12:17:41 121

原创 第九章 Map

HashMap:存储数据采用哈希表结构,元素存取顺序不能保证一致,保证唯一性需要重写hashCode() equals()方法。LinkedHashMap:存储数据采用哈希表+链表结构, 保证元素存取顺序一致。

2023-12-05 17:48:00 92

原创 第八章 List、Set、数据结构、Collections

集合数据存储的结构是链表结构。方便元素添加、删除的集合。链表和哈希表组合的一个数据存储结构。参数类型一致,且需要接受多个参数。:哈希表底层采用数组+链表实现。Comparator比较器。

2023-12-05 17:47:19 246

原创 Mybatis总结

二级缓存:二级缓存是 mapper 映射级别的缓存,多个 SqlSession 去操作同一个 Mapper 映射的 sql 语句,多个SqlSession 可以共用二级缓存,二级缓存是跨 SqlSession 的。使用二级缓存时,必须实现java.io.Serializable接口,使用序列化方法保存对象。就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。实体类中的属性名称必须和查询语句中的列名保持一致,否则无法实现封装。具体测试的结果:两次查询出来的结果对象相等则代表使用了缓存策略。

2023-12-04 20:15:16 440

原创 第七章 Collection集合和泛型

在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。

2023-12-04 20:10:16 119

原创 第六章Object类、常用API

查阅。

2023-12-04 20:09:42 455

原创 第五章 接口函数

用于修饰不可更改内容,用于修饰类 方法和变量。

2023-12-04 20:09:11 142

原创 第四章:面向对象

这种面向对象的思想将现实世界中的事物抽象成类和对象,并通过封装、继承和多态等特性来实现代码的可重用性、灵活性和可维护性。总之,重载和重写都是面向对象编程的常见概念,它们允许程序员在不同的情况下使用相同的名称来定义函数或方法。重载是在同一个类中定义多个方法,而重写是在子类中实现一个与父类具有相同名称和参数的方法。重写指在子类中实现一个与父类具有相同名称、参数列表和返回值类型的方法,并通过子类对象调用该方法时执行子类中的代码。在调用这些方法时,Java会根据实参的类型和数量来自动选择最合适的方法进行调用。

2023-12-04 14:34:49 86

原创 第三章:数组

【代码】第三章:数组。

2023-12-04 14:33:40 81

原创 第二章:流程控制语句

三种控制结果分为是:顺序,条件,循环。方法定义中的一些概念。

2023-12-04 14:32:42 71

原创 Chat-GPT原理

​ 除了自注意力机制外,Transformer架构还使用了残差连接(residual connections)和层归一化(layer normalization)等技术来加速训练过程和提高模型性能。​ Transformer架构通常由编码器(encoder)和解码器(decoder)组成,其中编码器用于将输入序列映射为一系列隐藏表示,解码器则利用这些隐藏表示生成输出序列。​ 在自注意力子层中,输入序列中的每个元素都可以与其他元素进行交互,通过学习注意力权重来确定不同位置之间的关联程度。

2023-12-02 15:09:17 2876 3

原创 1、Spring基础概念总结

Repository 持久层。

2023-12-02 14:08:18 87

原创 计算机网络一:TCP/IP基础概念和常见面试题

答:HTTP(Hypertext Transfer Protocol)是一种应用层协议,用于在Web浏览器和Web服务器之间传输超文本数据。HTTP采用客户端/服务器模型,客户端发送请求,服务器返回响应。HTTP协议基于TCP协议,通过TCP/IP协议栈进行通信。HTTP协议由请求消息和响应消息组成,请求消息包括请求方法、URI、HTTP版本等信息,响应消息包括状态码、状态描述、响应正文等信息。答:DNS(Domain Name System)是一种将域名解析为IP地址的分布式数据库系统。

2023-12-02 13:55:54 321

原创 第一章:JAVA基本概念

具体过程:Java源文件 .java转为字节码文件.class ,.class文件是Java可执行文件,字节码文件,字节码文件可以在jvm中运行;Java是编译型语言,通过对Java源代码文件进行编译成Class文件才能被虚拟机执行;变量:变量是固定不变的数据,程序中可以变化量就是变量。变量的定义:数据类型 变量名=数据值;常量:在Java程序中固定不变的数据。基本数据类型分为四类八种类。Java的编译和运行。

2023-12-02 00:35:54 82

原创 docker原理和基本概念

​ Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。​ docker架构:镜像,容器,仓库,使用的是 C/S架构模式,其中采用API来管理和创建Docker容器。​ 镜像:只读模板,镜像可以用来创建docker容器,一个镜像可以创建很多容器;​ 容器: 镜像创建的运行实例,与镜像的区别是可以读写操作。​ exec:在容器中打开新的终端,并且可以启动新的进程。

2023-12-02 00:32:33 188

原创 Java反射:框架设计的灵魂

在上面的代码中,我们首先创建了 MyClass 的实例 myClass,然后使用 getMethod() 方法获取了 doSomething() 方法的 Method 对象 method。Java反射提供了一系列的方法,如getMethods()、getField()、getMethod()等,用于获取和操作类的成员。其中,obj 参数是要调用方法的对象,args 参数是要传递给方法的参数列表,该方法返回一个 Object 类型的值,表示方法的返回值。:Java反射的入口是通过获取类的Class对象。

2023-07-31 11:45:06 111

原创 http//localhost/8080/o2o/shopadmin/shopoperatio 中文显示乱码问题

*3.以上设置完毕后注意编码编码格式:**https://blog.youkuaiyun.com/adminpd/article/details/78177686。​ 2.继续打开Tomcat configuration中的server在VM options中输入”-Dfile.encoding=UTF-8”​ 注:重新打开响应的地址前需要将浏览器缓存清理,清理后再重新打开,即可解决浏览器访问不显示中文显示?4.html文件显示中文正常,通过Tomcat访问的不正常处理。

2023-06-23 13:46:51 377

原创 Python常见环境配置(镜像源,虚拟环境,centos配置依赖,)

git clone加速 git clone github.com .cnpmjs.org在.com后面加黄色的。centos安装python3.9并配置虚拟环境。创建python虚拟环境。git clone加速。

2023-06-18 15:59:58 849

原创 JVM-内存模型理解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1d1vc3z2-1687074564948)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6fd1ed29-9cac-4641-97b6-cdde8a4ec154/Untitled.png)]​ 前几种算法的组合,将内存依据对象存活周期的不同将内存划分为几块,一般把内存分为新生代,老年代,永久代。其中新生代是朝生夕灭,存活时间较短;

2023-06-18 15:50:36 139

原创 Java JDBC基础

Java JDBC(Java Database Connectivity)是Java语言中用于与关系型数据库进行交互的标准API。使用JDBC,Java程序可以访问任何符合JDBC标准的关系型数据库,如MySQL,Oracle,SQL Server等。

2023-04-15 18:02:26 113

原创 Linux性能压测——端口占用解决方案

这些参数可以启用 TIME_WAIT 状态连接复用,即允许新连接复用处于 TIME_WAIT 状态的连接。这样可以减少 TIME_WAIT 状态连接的数量,从而释放端口。在 Linux 系统上,当应用程序关闭或崩溃时,其监听的网络端口可能会被保持一段时间占用,这可能会导致端口耗尽或者无法启动新的服务。修改 TCP keepalive 参数:可以通过修改 TCP keepalive 参数来降低端口占用的时间。

2023-04-05 23:02:19 2046

身份证地区数据AREA_INFO

身份证地区数据

2022-04-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除