自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 收藏
  • 关注

原创 logging日志的使用

说到日志,无论是开发写代码还是写UI自动化测试,都离不开日志的记录,它能给我们在定位问题、缺陷时带来很大的方便。通常测试人员使用最多的方法就是用print来打印出日志和报错信息,但是对于一些项目比较大的项目,使用print就不是那么方便了。因为print打印出来的日志没有时间,不知道日志记录的位置,针对这种情况,我们可以使用python自带的logging模块,可以很好地解决上面问题。...

2022-06-26 21:19:42 4758 1

原创 Unittest使用

unittest在python自动化测试中的使用,通过学习其几个常用的方法,可以帮助我们更好的掌握自动化测试

2022-06-18 15:28:38 329

原创 自动化测试—PyautoGUI模块使用

PyAutoGUI是一个图形用户界面自动化工具,通过屏幕x,y坐标系统获得目标位置,控制模拟鼠标和键盘进行点击、发送等功能,从而达到自动化测试目的。 使用PyautoGUI模块可以模拟鼠标进行点击操作,如单、双击,左击右击,鼠标移动。鼠标点击获取鼠标位置获取屏幕分辨率鼠标移动鼠标拖动鼠标滚动键盘使用键盘写入键盘按下键盘释放快捷键使用...

2022-06-04 20:05:20 469 1

原创 selenium驱动解析

背景在日常的测试工作中,我们经常会用selenium框架做自动化测试并使用webdriver来打开驱动浏览器,例如以下代码,通过webdriver来驱动浏览器打开百度首页。from selenium import webdriverdriver = webdriver.Chrome()driver.get('https://www.baidu.com/')但是这个webdriver是怎么工作来驱动打开浏览器的呢,下面就我的个人理解和各位小伙伴分享一下,希...

2022-05-28 18:39:55 1527

原创 jmeter中文乱码解决

说明在使用Jmeter做接口测试时,在进行http请求或者上产附件遇到中文会导致乱码问题,遇到这种问题通常有以下几种方式进行解决。解决方法1、在HTTP请求时加入信息头管理器,然后添加添加一个Accept信息,信息如下:2、如果上传附件是txt文本或者csv格式时,也可以指定编码格式为utf-83、如果配置了以上方法还是会出现乱码时,可以配置文件来解决,首先进入Jmeter的bin目录下,找到jmeter.properties文件,然后打开该文件,将#sample...

2022-05-22 21:14:55 5594

原创 pytest中pytest_addoption的使用

说明在日常的UI自动化测试中,可能使用涉及到多个场景,例如测试、预发、生产环境,这就需要我们进行环境切换,如果在不同的环境下我们要指定不同的系统配置,每次修改框架代码配置这个很不自动化,给测试造成了不必要的麻烦。针对这种情况,pytest提供了一种方法:pytest_addoption注册参数,使用这个注册参数就可以解决了这种问题,可以在执行用例、命令的时候传递参数。用法pytest_addoption注册参数一般和内置 fixture pyt...

2022-05-21 15:48:56 2155

原创 PageObject模式

前言对于做过UI自动化测试的小伙伴想必对PageObject模式并不陌生,它是我们编写自动化脚本时经常用到的一种思想,简单来说就是通过分层的方式将对象、操作、业务分开处理。模式介绍PageObject模式可以通常分为三层,即:基础层逻辑层业务层基础层是把一些基础的公共用法进行封装,例如页面的登陆方式,我们可以把它封装成一个基础层,这样有需要用到的时候直接调用,逻辑层是一些封装好的功能用例模块,业务层是真正写测试用例的地方。在这里...

2022-05-15 21:21:11 654

原创 swagger介绍

前言 在前后端分离开发的过程中,前端和后端需要进行api对接进行交互,就需要一个api规范文档,方便前后端的交互,但api文档不能根据代码的变化发生实时动态的改变,这样后端修改了接口,前端不能及时获取最新的接口,导致调用出错,需要手动维护api文档,加大了开发的工作量和困难,而swagger的出现就是为了解决这一系列的问题。swagger的概述swagger是一套基于OpenAPI规范构建的开源工具,使用RestApi1、代码变,文档变2、跨语言,支持多种语言...

2022-05-08 17:08:46 527

原创 jmeter请求超时设置

背景在日常的API接口自动化测试中,会遇到这样一个问题:使用jenkins批量执行jmeter的API接口用例时,当某个接口因为服务器或者网络原因导致http请求或者响应时间很长时导致jenkins执行用例失败,因此我们需要设置一个超时等待时间来解决这一问题。解决方法在jmeter中有一个方法叫做timeout,我们可以把它称作超时时间,它的作用是如果实际执行时间超过这个timeout设置时间,jmeter就会自动报错,不再继续进行该次请求。例...

2022-05-02 14:48:35 13637

原创 Chrome Network-Copy介绍

在日常测试中,我们经常会使用谷歌浏览器自带的开发者工具进行抓包,于是了解、学习谷歌的开发者工具对我们十分有帮助。 首先我们按下F12进行开发者工具,然后点击Network,选择一条接口然后右击,弹出一些会话框,这就是几天要介绍的一些内容是做什么的。其中:Open in new tab:在新的标签中打开链接Clear browser cache:清空浏览器缓存Clear browser cookies:清空浏览器cookiesCopy:复制...

2022-04-09 14:30:48 2151

原创 点击验证码识别

背景在日常的网站登陆时,我们经常会遇到这种形式的验证码,那就是根据提示进行文字点击,例如B站登陆时让你按照提示依次顺序点击。​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 在我们做自动化测试时,无论是UI还是APP或者小程序,或多或少的都会遇到这种文字点击识别登陆,对于这种情况,我们可以借用第三方平台“超级鹰”来自动识别并登陆。说明 首先...

2022-04-05 11:46:51 1911 1

原创 MySQL-连接查询

连接查询连接查询是将两个或者两个以上的表按照某个条件连接起来,从中选取需要的数据。连接查询是同时查询两个或者两个易用的表时使用的,当不同的表中存在同意义的字段时,可以通过该字段连接这几个表。内连接查询语法结构:JOIN | CROSS JOIN INNER JOIN ON 连接条件--显示两个表中符合连接条件的记录示例--查询cms_user表中id,username,email,sex,--查询provinces表proName--性别为男性--前3条数据SELECT

2022-04-05 10:16:44 489

原创 MySQL-数据表操作

插入记录语法使用示例:--不指定具体的字段名称INSERT [INTO] tbl_name VALUES|VALUE(值1,值2,值3,值4);--列出指定字段INSERT [INTO] tbl_name (字段1,字段2,字段3....) VALUES|VALUE(值1,值2,值3.....);--同时插入多条记录ISNET [INTO] tbl_name(字段1,字段2,字段3.....)VALUES|VALUE(值1,值2,值3),(值4,值5,值6);--通过SET形式插入记

2022-03-29 21:18:58 110

原创 MySQL-数据查询操作

查询记录查询模板:SELECT select_expr [,select_expr,...][ FROM table_referances [WHRER 条件] [GROUP BY {col_name|position} [ASC |DESC],....分组], [HAVING 条件 对分组结果进行二次筛选], [ORDER BY {col_name | position } ASC | DESC],...排序], [LIMIT 限制显示条数]

2022-03-20 13:02:28 529

原创 MySQL-修改表结构

修改表名修改表名有两种方法:方法一:ALTER TABLE tbl_name RENAME [TO|AS] new tab_name;方法二:RENAME TABLE tbl_name TO new_name;--示例ALTER TABLE user10 RENAME TO user11;ALTER TABLE user10 RENAME AS user11;REANME TABLE user10 TO user11;添加字段--FIRST代表将新增字段放置第一

2022-03-20 12:57:29 1618

原创 MySQL-数据表操作

插入记录--不指定具体的字段名称INSERT [INTO] tbl_name VALUES|VALUE(值1,值2,值3,值4);--列出指定字段INSERT [INTO] tbl_name (字段1,字段2,字段3....) VALUES|VALUE(值1,值2,值3.....);--同时插入多条记录ISNET [INTO] tbl_name(字段1,字段2,字段3.....)VALUES|VALUE(值1,值2,值3),(值4,值5,值6);--通过SET形式插入记录INSERT

2022-03-13 20:53:57 1330

原创 MySQL-表的约束性条件

主键一个表只能有一个主键,主键默认不能为空,主键用PRIMARY KEY表示。--测试主键 CREATE TABLE KEY IF NOT EXISTS uesr1( id INT PRIMARY KEY, username VARCHAR(20) ); --查看创建表的定义信息 SHOW CREATE TABLE user1;自增长AUTO_INCREATEMENT被标记成自增长的字段一定是主键,但主键不一定是自增长...

2022-03-13 20:47:07 1331

原创 MySQL-数据表相关操作

什么是表数据表是数据库最重要的组成部分之一,是其他对象的基础;数据库是存储数据的数据结构;数据表是包含了特定实体类型的数据;数据表有行(row)和列(column)构成的二维网格;数据表一定先有表结构,再有数据;数据表至少有一列,可以没有行或者多行;数据表名称要求唯一,而且不要包含特殊字符。如何创建数据表CREATE TABLE [IF NOT EXISTS] tb_name(字段名称 字段类型 [完整性约束条件]...) ENGINE = 引擎名称 CHARSET...

2022-03-06 12:54:19 536

原创 Mysql-存储引擎

什么是存储引擎存储引擎就是指表的类型,数据库的存储类型决定了表在计算机中的存储方式,用户可以根据不同的存储方式、是否进行事务处理等来选择合适的存储引擎。如何查看MySQL的存储引擎查看MySQL支持的存储引擎:SHOW ENGINES查看显示支持的存储引擎信息:SHOW VARIABLES LIKE 'have%'查看默认的存储引擎:SHOW VARIABLES LIKE 'storage_engine';MySQL常用存储引擎及特点InnoDB存储引擎特点:...

2022-03-06 12:47:36 223

原创 MySQL-常用数据类型

整数类型TINYINT 、SMALLINT、 MEDIUMINT 、INT 、BIGINT、 BOOL、BOOLEAN浮点类型FLOAT[(M,D)] ,其中M代表总位数,D代表小数点为,如1.234,M=5,D=4字符串类型CHAR 、VARCHAM 、TINYTEXT 、TEXT 、MEDIUMTEXT、 LONGTEXT 、ENUM(枚举类型) SET集合日期事件类型TIME、 DATE 、DATETIME、 TIMESTAMP 、YEAR数据具体类型可以参考菜鸟教程的

2022-02-26 19:38:31 397

原创 MySQL-数据库基本操作

创建数据库CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_namedb_name为数据库名称,这里需要注意的是数据库名称是一个目录允许的任意中文,最大长度支持64位查看当前服务器下的数据库列表SHOW {DATABASE | SCHEMAS}查看指定数据库的定义SHOW CREATE {DATABASE | SCHEMA} db_name查看上一步操

2022-02-26 19:13:25 324

原创 selenium通过文本定位

1、全部文字browser.find_element_by_xpath("//[text()='文字内容']").click()2、部分文字browser.find_element_by_xpath("//*[contains(text(),'文字内容')]").click()

2022-02-20 22:01:34 5448

原创 Python字段数据保存到excel表格

前言在日常测试中我们会遇到将获取的数据保存到excel中,例如通过Pthon的request请求获取的数据,那么我们可以通过以下方法进行处理。数据处理我们可以将获得的数据以字典的形式进行存储,例如:data1 = {"key1":["test1","test2","test3"], "key2":["test4","test4","test6"], "key3":["test7","test8","test9"]}...

2022-02-19 22:55:59 8901

原创 seleniumbase分享

最近部门准备使用seleniumbase做UI自动化测试,它是基于Selenium和unittest单元测试框架的一个测试框架,具体源码可以在github上查看,它比selenium提供了更加丰富的API,和一些强大的功能。具体使用方法可以参考该虫师的博客,里面详细介绍了其如何使用、安装。 参考连接:Web测试框架SeleniumBase - 虫师 - 博客园,部分内容如下:...

2022-02-13 20:01:03 358

原创 Maven的安装与配置

背景新的一年打算学习Java,通过熟悉Java代码来了解业务,于是让开发同事把他们的工程代码权限分享给我,代码拿到使用IDEA打开时发现报错,百度一番无果后询问开发同事,究其原因是我的IDEA没有maevn,需要安装。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理,Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。安装与配置Maven的安装与配置可参考该博客,里面有做了Ec...

2022-02-11 21:07:07 369

原创 Eclipse 窗口说明

工作台Eclipse工作台是多个窗口的集合。每个窗口包含菜单栏,工具栏,快捷方式栏,以及一个或者多个透视图。透视图是一个包含一系列视图和内容编辑器的可视容器。 视图完全存在于某个透视图中而且不能被共享,而任何打开的内容编辑器可以在透视图间共享。 如果两个或者多个透视图打开了同样的视图,他们共享这个视图的同一个实例,虽然在不同透视图之间视图的布局可能不同。 对于不同的工作台窗口中的透视图,编辑器和视图都不能共享。 一个透视图就好像是一本书里面的一页。它存在在一个窗口中,并且...

2022-02-05 12:59:12 190

原创 Eclipse 视图

介绍Eclipse视图允许用户以图表形式更直观的查看项目的元数据。 例如,项目导航视图中显示的文件夹和文件图形表示在另外一个编辑窗口中相关的项目和属性视图,另外Eclipse 透视图可以显示任何的视图和编辑窗口。视图操作移除视图:视图从一个文件夹视图移动到另外一个文件夹视图只需要点击视图标题并推动视图工具区域到另外一个文件夹视图。创建文件夹视图:文件夹视图可以通过移动视图标题栏到编辑去外或移动标题栏到另外一个文件夹视图来动态创建。 下图中如果你拖动了绿色线框内的标题栏意味...

2022-02-05 12:47:27 828

原创 Eclipse 菜单介绍

介绍Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。Eclipse 是 Java 的集成开发环境(IDE),当然 Eclipse 也可以作为其他开发语言的集成开发环境,如C,C++,PHP,和 Ruby 等。Eclipse 附带了一个标准的插件集,包括Java开发工具。 本次主要和大家介绍一下Eclipse的主菜单,方便大家以后快速使用。菜单Eclipse 查看的菜单栏通常包含以下几个菜单:1、File 菜单...

2022-02-05 11:59:53 2207

原创 Python获取文件夹下的所有文件名

import osfile_dir = 'D:\dir' #你的文件路径def getFlist(path): for root, dirs, files in os.walk(file_dir): print('root_dir:', root) #当前路径 print('sub_dirs:', dirs) #子文件夹 print('files:', files) #文件名称,返回list类型 return files.

2022-02-04 13:20:58 23820 3

原创 打造自己的ip代理池

在爬虫时经常需要使用代理,于是我爬取了一个可以免费提供代理的网址,从中获取免费代理,从而打造属于一个自己的代理池。如图所示,这是网址的界面展示,我们需要做的就是需要其中的ip、port列中的数据,获取数据后需要我们拼接成一个完整的IP然后保存即可,代码如下:import requestsfrom lxml import etreeimport osurl = 'https://www.kuaidaili.com/free/inha/3/'headers =...

2022-02-03 15:47:42 3173

原创 代理的使用

urllib代理设置:from urllib.error import URLErrorfrom urllib.request import ProxyHandler,build_openerproxy='192.168.xxx.xxx' #使用本地代理proxy_handl=ProxyHandler({ 'http':'http://'+proxy, 'https':'https://'+proxy})opener=build_opener(proxy_handl)

2022-02-03 15:17:05 620

原创 you-get视频下载

说明最近在github、CSDN上浏览爬虫相关的博客、代码,无意间发现了一位大神开源的一个名叫“you-get”的爬虫代码,简单了解之后顿时感觉发现了一个“新世界”,使用you-get就可以轻松的下载许多网站的视频、图片和音乐。也不用自己取进行请求,构造请求头,只需安装“you-get”库即可。安装使用you-get库可以直接通过pip进行安装,在python3版本下可以直接安装,这里推荐使用清华源进行安装,下载速度还是很快的:pip install -i https://......

2022-01-23 15:12:17 375

原创 Pandas—时间序列

背景在日常数据分析中,我们会做到以下一些任务,如:生成固定频率日期和时间跨度的序列将时间序列整合或转换为特定频率基于各种非标准时间增量(例如,在一年的最后一个工作日之前的5个工作日)计算“相对”日期,或向前或向后“滚动”日期。这是我们可以用到pandas的date_range来进行处理。使用方法1、生成一段时间范围该函数主要用于生成一个固定频率的时间索引,在调用固定方法时,必须指定start,end,per...

2022-01-16 19:25:02 1020

原创 Jmeter—循环控制器

循环控制器,顾名思义就是该控制器下的请求会按设置好的循环次数,循环执行多次。如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘的结果。例如:发起3次调用请求,此时执行结果树可以看到一个请求被循环调用了3次。如果此时把请求1放置循环控制器同一的节点目录下,此时再执行结果,可以看到虽然此时循环量3次,但是请求1只执行了一次,也就是说循环控制器只是针对其子节点有效。...

2022-01-15 19:57:09 552

原创 join连接查询时条件放在on后与where后的区别

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。...

2022-01-09 12:10:00 401

原创 Python爬取4K墙纸,想换就换

背景近期换了一个电脑显示屏,需要选择高清照片作为壁纸,于是结合自己平常所学的爬虫爬了一些高清图片来作为壁纸,下图所示:说明 首先选择一个网址,爬取其中的4K图片,主要工作内容是爬取图片和图片名称,然后保存到本地。分析 首先我么打开浏览器开发者工具,找到图片的url连接,经过分析可知,图片的url连接在li标签下面的href属性中,我们点开该链接就可以跳转到图片详情中去,但是这里需要注意的是,href属性内容只是url链接的一部分,我...

2022-01-08 21:59:01 676

原创 pycharm代码自动添加时间及日期

背景 在用pycharm写代码时有时需要知道py文件的作者,时间和指定的编码格式,手工填写的话比较费时费力,而且更重要的一点是“会经常忽略”,为了解决这个问题,我们可以通过设置pycham来自动生成时间、作者等信息。方法1、打开pycharm,然后进入“File→→Settings→→Editor→→File and code Templates”界面,然后点击“Python Script”.2、在右侧输入框中设置以下代码,然后保存即可。##!/usr/bin...

2021-12-26 14:37:17 5848 1

原创 设置jupyter notebook文件保存位置

默认位置 在安装完jupyter notebook后,新建文件一般会默认存储在C盘某个位置,此时可以通过os模块来查看新建的文件保存路径,具体如下:首先新建一个.ipynb文件,然后输入以下代码,然后运行此代码,可以看到文件存储的路径在C盘下面。import osprint(os.path.abspath('.'))修改文件存储路径如果我们需要修改文件存储路径怎么办呢吗,那可以通过以下方法进行修改文件存储路径。step1:找到配置文...

2021-12-26 13:24:26 21531 14

原创 jupyter一直在运行,不出结果

问题启动jupyter运行代码时,代码一直在运行中,而且一直显示*,提示“WebsocketProtocol is not connected”解决方法安装notebook的6.1.4版本,命令如下:1、pip uninstall notebook2、pipinstall notebook=6.1.4安装完成后重新启动jupyter即可。...

2021-12-18 19:39:01 10931 2

原创 jupyter-notebook not found

前言在使用pip install jupyter命令安装jupyter后,然后在cmd终端中输入“jupyter notebook”后,提示Jupyter command 'notebook': Errno 'jupyter-notebook' not found,现将解决方法总结如下。解决方法1、卸载jupyter后重新安装,命令如下:pip install jupyter notebook2、安装对应的tornado版本查看自己的tornado版本,将安装的tornado版本升

2021-12-18 19:15:58 6452

空空如也

空空如也

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

TA关注的人

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