自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 docker-jenkins生成报告提示 ERROR: Step ‘Allure Report’ aborted due to exception: java.nio.file.AccessDen

其实是jenkis没有权限创建报告文件的问题,在生成报告之前,使用。,这里必须使用root账号进入,否则无法安装sudo,然后我们先使用。,此时我们就需要在进入jenkins容器内按照sudo。然后我们再次构建,此时会发现构建成功,报告也生成成功了。但是我们运行之后可能会提示。更新apk,然后使用。

2022-09-05 21:32:03 1593 1

原创 linux 使用pyperclip 模块 报错问题

第 2 步:从 EPEL 存储库安装 xclip。安装完成后即可正常使用pyperclip 模块。第 1 步:安装 epel 存储库。

2022-08-06 17:35:51 671

原创 selenium toast 有时候返回空字符串的问题

在自动化化测试过程中我们经常要对toast进行判断,但是在实际过程中,有时候会遇到查找toast成功,但是返回的字符串是空的情况,比如下方代码:t=time.time()+10while True: if time.time()>t: break try: print(222,web.driver.find_element(By.XPATH, '//*[contains(text(), "更新成功") and @class="el-message__content"]').

2022-05-23 02:35:17 769

原创 svg标签内元素的xpath定位方式

<svg data-v-f9f7fefc="" aria-hidden="true" class="el-tooltip svgIcon-style svg-icon" aria-describedby="el-tooltip-701" tabindex="0"> <use data-v-f9f7fefc="" xlink:href="#icon-编辑"> </use></svg>由于svg属性的特殊性,所.

2022-05-22 23:47:28 3454 3

原创 关于Selenium时,报错move target out of bounds的问题

这个问题很大概率时因为多次使用ActionChains().move_by_offset的问题,因为每次使用move_by_offset()中使用坐标都是针对上一步的计算的,比如一下代码:# 鼠标移动到x="1270",y"390"的位置ActionChains(web.driver).move_by_offset("1270","390").perform()# 鼠标移动到x="1270",y"390"的位置ActionChains(web.driver).move_by_offset("1270

2022-05-22 23:24:08 7058

原创 python通过项目名称获取项目绝对路径

思路:通过获取当前项目下的任意文件位置,并通过传入的项目文件,截取并重新拼接项目的绝对路径 def get_project_data(project_name): """ :param project_name: 项目名称 :return: """ path_list=os.getcwd().split("\\") new_path="\\".join(path_list[:path_

2022-05-16 03:01:36 609

原创 关于通过命令行运行python脚本时提示(E ModuleNotFoundError: No module named ‘xxxxx‘)的解决方式

有时候我们通过命令行运行python脚本时会提示E ModuleNotFoundError: No module named 'xxxxx',找不到模块的情况,如下图:这因为我们直接用pycharm时,编辑器已经将我们所在的工作目录添加进环境变量了,但是我们通过使用命令行的方式运行时没有当前工作目录的环境变量导致了,我们可以通过打印sys.path的方式可以看见当前的环境变量,如下图:解决方法:我们可以通过添加环境变量的方式来解决这个问题,在通过命令行要运行的python脚本内使用sys.pat

2022-05-15 22:09:08 1635

原创 关于python self与cls的理解

类的方法有三种:一、是通过def定义,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问;二、是在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用;三、是在def前面加上@staticmethod,这种类方法是静态的类方法,参数可以为空,支持类名和对象两种调用方式;代码示例:class A(object): def __init__(self

2022-05-15 21:50:00 689

原创 Selenium在已打开的浏览器上进行调试

Selenium编写用例的时候,需要不断的运行调试debug,但正常情况会每次重新打开一个Chrome运行,如果你的系统需要登陆,或者你正在调试的用例需要很长的前置步骤,都重新来一遍非常浪费时间。有没有办法可以让Selenium直接在已打开的浏览器上继续运行呢?有的:启动浏览器并开启远程调试首先使用命令打开Chrome浏览器并开启远程调试功能,打开CMD,输入chrome.exe --remote-debugging-port=9222 -user-data-dir="D:\selenium\ch

2022-05-14 09:21:16 1929

原创 selenium常用操作

常用元素定位from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.service import Services=Service(r'C:\Users\Administrator\Desktop\chromedriver.exe')driver=webdriver.Chrome(service=s)# css定位driver.find_e

2022-05-12 22:22:25 2148

原创 性能测试环境的搭建与数据构造

关于性能测试环境1.建立测试环境在进行性能则试之前,需要先完成性能测试环境的搭建工作,测试环境一般包括硬件环境、软件环境及网络环境,一般情况下可以要求运维和开发工程师协助完成2.性能测试环境的特点性能测试对测试环境的独立性要求更高,更为严格,因为如果某环境下运行多个系统,就很难判断其中的某个环境对资源的占用情况尽量保持性能测试环境与真实生产环境的一致性3.如何保证测试环境与生产环境一致性硬件环境包括服务器环境(服务器硬件配置,硬件服务器的台数等),网络环境等软件环境版本一致

2022-04-26 23:22:33 1309

原创 JMeter进阶-常用第三方插件讲解

第三方插件的安装与使用准备工作:1.最新版本的JMeter是默认不展示插件管理器的,所以我们需要手动添加插件管理器2.下载地址:https://jmeter-plugins.org/install/Install/,下载插件plugins-manager.jar,然后将jar包放在apache-jmeter-x.x.x\lib\ext路径下,重新打开jmeter客户端即可在“选项”下面可以看到了Plugins-Manager这个插件了。Concurrency Thread Group(阶梯式加压

2022-04-13 20:11:04 4417

原创 1小时学会XPath的基本使用

XPath是一门在XML文档查找元素信息的语言<?xml version="1.0" encoding="UTF-8"?><bookstore><book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year&

2022-03-10 17:02:06 210

原创 JMeter的基本使用

元件的基本介绍:元件:多个类似功能组件的容器(类似于类)。常见的元件类型有:取样器逻辑控制器前置处理器后置处理器断言定时器测试片段配置元件监听器 组件:实现独立的某个功能(类似于方法)元件作用域:1.取样器:元件不和其他元件相互作用,因此不存在作用域的问题;2.逻辑控制器:元件只对其子节点中的取样器和逻辑控制器作用;3.其他六大元件:除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父子节点起作用;4.如果其父节点不是取样器,则其作用域是该元件父节点下的其

2022-03-08 00:16:05 11865

原创 subprocess.Popen()的使用

subprocess模块主要用于创建子进程,并连接它们的输入、输出和错误管道,获取它们的返回状态。通俗地说就是通过这个模块,你可以在Python的代码里执行操作系统级别的命令,比如“ipconfig”、“du -sh”等等。subprocess模块替代了一些老的模块和函数,比如:`os.system,os.spawn,os.popen*`subprocess.Popen()的基本入参介绍subprocess.Popen()(args, *, stdin=None, input=None, stdout

2022-03-06 14:48:32 18313 2

原创 性能测试策略和指标的基本了解

什么是性能:性能就是软件质量属性中的"效率"特性效率特性时间特性:指系统处理用户请求的响应时间资源特性:指系统运行过程中,系统资源的消耗情况cpu内存磁盘io(磁盘的写入input和读取output,简称io)什么是性能测试:概念:使用自动化工具,模拟不同场景对软件各项性能指标进行测试与评估的过程就是性能测试为什么要做性能测试:1.为了让软件在用户访问量过大的情况下,系统能否稳定运行,2.用于硬件服务器的选型3.用于软件技术的选型性能测试的目的:1.评估当前系统能力

2022-02-20 22:15:31 1136

原创 使用Fiddler拦截并修改数据与AUtoResponder重定向的使用

Fiddler有2种拦截方式一种是发送服务器前拦截数据,一种是接受服务器前拦截数据,下面我使用例子在告诉大家如何使用。1.拦截并修改发送数据:快捷键F11比如我们请求数据,body为{“int”:123456},如下图:然后我们打开Fiddler,并在Rules–>Automatic Breakpoints–>勾选Before Requests,或者按下快捷键F11当下方出现红色向上箭头时代表已经开启拦截,这时我们出现请求接口,会发现该接口已经被拦截,然后我们再修改请求信息,然后点

2022-01-06 00:45:47 3209

原创 Mock的使用与Moco框架的使用

mock测试的概念:mock测试:在测试过程中,对于某些不容易构造的或者不容易获取的对象,可以用一个虚拟对象来代替测试中的方法接口mock测试:在接口测试过程中,对于某些不容易构造的或者不容易获取的接口,可以用一个模拟的接口来代替测试mock的使用场景:1.前端已开发完成,后端还未开发完成,2.公司内部需要调用第三方接口(如需要调用微信支付或支付宝支付时不可能每次测试都支付)3.对于某些不容易构造的或者不容易获取的对象使用mock进行模拟(比如比较难出现的接口返回异常等情况也可以使用mock进行

2022-01-04 23:32:04 998 1

原创 docker进阶-使用详解

什么是docker:Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。docker 安装:卸载旧版本:$ sudo yum remove docker \ docker-client \

2022-01-02 18:04:23 213

原创 python venv虚拟环境的使用

Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv。该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包。需要注意的是,在Python3.3中使用"venv"命令创建的环境不包含"pip",你需要进行手动安装。在Python3.4中改进了这一个缺陷。虚拟环境常用场景:多人代码协作环境不一样导致

2022-01-01 16:24:33 16022

原创 git的常用命令与gitee远端仓库的拉取

git的常用命令:创建库命令:git init添加修改的文件命令: git add 文件名添加所有修改的文件命令: git add .删除文件命令: git rm 文件名提交暂存库内所有的修改命令: git commit -m "备注信息"查看历史提交记录命令: git log查看暂存库命令: git status版本回退命令: git reset --hard 提交码还原暂存库内的修改命令: git checkout -- 文件名还原暂存库内的所有修改命令: gi

2021-12-24 22:37:05 1151

原创 使用Fiddler模拟弱网测试

什么是弱网测试在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/Edge/4G/Wifi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。从测试角度来说,需要额外关注的场景就远不止断网、网络故障等情况了。对于弱网的数据定义,不同的应用所界定的含义是不一样且不清晰的,不仅要考虑各类型网络最低速率,还要结合业务场景和应用类型去划分。按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外,弱信号的Wifi通常也会被纳入到

2021-12-21 14:37:51 413

原创 Android常用分辨率和尺寸适配

随着 Android 设备的多样化,越来越多不同尺寸的手机,它们有着不同的屏幕尺寸和像素密度。 为了使界面适应不同屏幕,我们需要适配不同屏幕上的应用构建。屏幕尺寸一般是手机的实际物理尺寸,即屏幕的对角线的长度。单位是英寸/in,1in = 2.54cm。屏幕分辨率屏幕上显示的像素个数,单位尺寸内像素点越多,分辨率越高,显示效果就越精细和细腻。单位是像素/px,1px = 1个像素点。现在市场上主流手机分辨率为:720 * 1280 和 1080 * 1920屏幕密度表示屏幕每英寸

2021-10-22 17:48:51 5840

原创 使用QNET进行弱网测试-

Kbps与Mbps转换地址:http://www.zhongguosou.com/computer_question_tools/data_rate_caculator.html

2021-10-21 15:04:49 4684

原创 appium 1.22.0版本 Appium Inspector 连接使用教程

前言在appium 1.22.0版本服务和元素查看器分家了,查看元素信息就必须下载Appium Inspector可通过地址下载或者点击原来的查看元素按钮直接打开下载地址下载地址:https://github.com/appium/appium-inspector使用AppiumServer参数填写:远程主机:需要填写AppiumServer服务的主机地址,默认127.0.0.1远程端口:需要填写AppiumServer服务的主机端口,默认4723远程路径:appium服务器的路径,默认填

2021-10-13 14:54:45 10825 7

原创 python字典 变量引用与pop()删除方法的坑

a={}b={}c={"c":1}a["a"]=c # {'c': {'c': 1}}b["b"]=c # {'c': {'c': 1}}# 但字典a删除a字典下c的值时(1),字典b的字典b下c的值时也会删除{'c': 1},# 因为他们使用的同一个变量,a["a"].pop("c") # 删除了值1print(b) #输出 {'b': {}}其实del 语句和 pop() 函数作用相同,只不过pop() 函数有返回值。,那么以上代码就相当于a={}b={}c={"c":1

2021-08-31 10:17:23 296

原创 python 对列表与字典进行排序--sort()与sorted()函数的使用

sort()函数:函数用途:函数用于对原列表进行排序语法:list.sort( key=None, reverse=False)key=主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse=排序规则,reverse = True 降序, reverse = False 升序(默认)注意:sort()函数是直接对列表本身进行排序,而不是输出一个新的列表list=[12,6,7,8,1,3,7,4,9]list.s

2021-08-29 00:22:57 1030

原创 UnitTest基本使用及如何生成测试报告

UnitTest:python自带的一个单元测试框架,用它来进行单元测试UnitTes核心要素TestCase(测试用例):第一步:导入unittets模块第二步:实现一个类,类必须继承unittest.TestCase类第三步:类中每个方法代表一个测试用例,方法名必须以test开头案例:import unittest# 测试用例1def sum(a,b): return a+b# 创建测试合集,继承unittest.TestCaseclass my_test(unittest

2021-08-22 19:52:38 3199 1

原创 pymysql模块的使用

安装:pip install pymysql

2021-08-08 22:57:30 132

原创 postman高级用法

断言:如何使用?状态码的断言:快捷代码Status code: Code is 200断言代码pm.test("Status code is 200", function () { pm.response.to.have.status(200); });例子:断言状态码为200代码pm.test("状态码为200", function () { pm.response.to.have.status(200); });返回状态:json数据的断言:快捷代码Response body

2021-08-03 02:34:58 623

原创 接口用例设计的方法与思路

功能测试 :验证接口功能是否按照接口文档实现(输入+处理+输出)单接口测试正向功能:(通过性测试)仅必填参数(之输入全部必填)全部参数(全部必填+全部非必填)参数组合 (全部必填+部分非必填)反向测试:(异常测试)参数异常:无参,少参(针对必填),多参(一般健壮性较好的程序会自动忽略多余的参数),错误参数(常见的拼写错误)数据异常:数据为空,长度不符,类型不符,错误数据,业务数据异常:结合业务功能考虑输出的各种异常返回情况(测试关注点:返回的异常状态码)多接口测试

2021-08-01 21:07:20 1078

原创 如何快速熟悉项目并制订测试用例

熟悉项目的步骤:1.了解项目的业务特性:比如项目是什么类型的,主要用来做什么?2.了解项目的角色与用户:项目主要是给谁用的?主要的用户群体是哪些?3.了解项目的组织架构图:项目主要包括那些功能模块?这些功能主要用来做什么?使用这个功能的前提是什么?4.了解项目的技术栈:项目是使用那些技术实现的?用了哪些工具?项目功能的实现方式和代码逻辑熟悉项目的信息来源:项目中已经存在的文档:需求说明书,用户使用手册,测试用例等使用项目已有的环境:开发环境,测试环境,线上环境等询问项目中的其他人员:测试组

2021-07-23 00:27:04 376

原创 测试用例常用设计方法

等价类划分法:满足要求:有效等价类不满足要求的:无效等价类案例:需求:输入账号,账号未11位纯数字并以1开头。有效等价类:123455678901无效等价类:23456789011(以2开头)1234567890(11位数字)123456789011(12位数字)1234567890a(包含字母)1234567890!(包含特殊字符)123456789 0(包含空格)边界值(对等价类划分法的补充):上点:边界上的点内点:边界内的点离点:离边界最近的左右两点例子1:1-100

2021-07-22 23:25:49 668 2

转载 测试用例设计的八大要素

1、测试用例的八大要素用例编号和其他编号一样,测试用例编号是用来唯一识别测试用例的编号,要求具有易识别和易维护性,用户可以很容易根据用例编号获取到相应用例的目的和作用,在系统测试用例中,编号的一般格式为A-B-C-D这几部分的作用分别如下:A:产品或项目类型,如CMS(内容管理系统)、CRM(客户关系管理系统)B:一般用来说明用例的属性,如ST(系统测试)、IT(集成测试)、UT(单元测试)C:测试需求的表示,说明该用例针对的需求点,可包括测试项和测试子项等,如文档管理、客户投诉信息管理等。

2021-06-30 00:16:41 4671

原创 sql基本语言使用

-建立表语法:create table 表名(字段 字段类型);例子:create table test001(num int,str varchar(30), float decimal(6,2));解释:建立一个名为test001的表名并增加nun(数字类型),str(字符串类型限制最多30个字符),float(小数类型)这个3个字段删除表语法:drop table 表名;例子:drop table test001;解释:删除表名为test001的表如果有就删除表语法:dro

2021-06-05 23:15:31 1321 1

原创 python 毫秒级计时

t = time.time()for i in range(10000): print(i)time.sleep(1)t2=time.time()a_t = (round(t2 * 1000)-round(t * 1000))/1000print(a_t)

2021-06-04 10:54:47 1604

原创 python获取该app所有的activity

可通过 aapt dump xmltree appfile AndroidManifest.xml 命令获取该app所有的activit,所以我的思路是通过命令保存为文本,然后再获取以E: activity 开头的行数,然后依照保存的行数for循环去获取该行的下一行或者下下行,假如该行有name字符串,那么获取该行并处理保存到列表内。linecache.getline 模块是用来读取文本的方法,可通过行来读取。 def get_activit(file): activit = []

2021-05-18 09:45:12 766

原创 批量删除指定目录下指定后缀名的文件

def pp(address,Suffix): #获取当前目录下所有的文件 a=os.listdir(address) print(a) for i in a: #i 为每个文件的名字 print(i) #判断文件后缀名是否为.jpg if i.endswith(Suffix): os.remove(r"C:\User...

2021-03-03 14:20:39 391

转载 uiautomator2遍历子元素

百度多次未找到遍历一个uiautomator2中子元素的方法,通过自己查看实现代码,找到了方法,分享出来供大家参考。当你获取了页面某个元素之后 elements = d(’//*[@clickable=“true”]’).all()返回的是一个list,其中是<uiautomator2.xpath.XMLElement>类型的变量。可以通过以下方式获取它所有子类的信息。for ele in elements: children = ele.elem.getchildren()

2021-02-28 17:59:58 5420 2

原创 uiautomator2+python封装简单的上下或左右查找元素的方法

uiautomator2+python封装简单的上下或左右查找元素的方法 使用d.dump_hierarchy() 截取当前页面所有元素,假如滑动到底部,那么页面元素不会变更,所以可以判断滑动到底部或者顶部。 但是使用d.dump_hierarchy()会页面截取所有信息,其中包括时间和实时流量,这些每秒钟都会变更的,所有为了屏蔽部分信息,我从页面信息的百分之50开始获取,不同手机可能不一样,这些代码在小米k20Pro上可以正常运行,各位大佬要是有更好的方法可在下方评论交流交流。class BaseA

2021-02-20 19:12:44 2354

空空如也

空空如也

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

TA关注的人

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