自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 robotframework学习使用心得集合

基于python3.7安装robotframework 通过robotframework发送的第一个请求 使用小驼峰命名法和蛇形命名法引起的问题

2021-07-05 16:05:20 147

原创 接口自动化持续集成——postman+newman+git+jenkins环境搭建

1. 通过postman完成接口脚本的编写2.安装Newman Newman是postman的命令行集合运行期, 升级GCChttps://blog.csdn.net/weixin_42090356/article/details/90678158

2020-07-27 19:14:17 637

原创 robotframework调用上传文件接口报错“the request was rejected because no multipart boundary was found”

设置的headers信息发起请求后服务器端报错寻找到原因是因为content-type里面没有添加boundary信息,重新修改headers参数重新请求接口,不报上面的错误了,但是又报出了另外的错误出现了空指针异常的错误,咨询了开发应该是没有获取到文件信息,不太清楚具体错误的原因在网上看到篇博客里面说不要在headers里面加自己的content-t...

2019-03-28 14:40:45 141072 22

原创 robotframework-传参换行导致的问题

起因:最近有点空闲,又通过robotframework做接口测试,首先第一个登录就又把人难住了发了请求后,没有得到预期的结果,从结果看返回了登录的界面分析:登录接口本身是一个重定向的接口,而且需要先调用一个get请求,创建好一个session后,再调一个post请求,通过重定向后完成登录 上图为通过python+requests调用接口,通过fiddler捕获到的结果,下图为部分代码而通过robotframework调用的接口,通过fiddler捕获到的结果显示第二个该重定向的接口,返回结果却是20

2022-06-27 14:30:58 670 1

原创 jenkins——在mac系统下,执行python命令报错ImportError: No module named xxx

起因:在mac上安装了python3.9,也配置了python3.9的环境变量,在终端输入python -V能够查看到版本号为3.9.x自己编写的代码不管是在终端还是在pycharm里面都能够正常运行,放到jenkins上,在jenkins里面写的执行命令就是python xx.py,构建以后控制台缺报错说导入模板不存在问题:在jenkins里面执行python -V命令查看到的python版本却是mac自带的2.7将jenkins里面的执行命令换成python3 xx.py后能成功执行

2021-08-05 14:43:48 605

原创 web自动化——记录使用jenkins自动构建遇到的问题

需求:使用git进行代码管理,使用jenkins自动构建,当git上代码发生变化时,jenkins自动构建,从git上把最新的代码拉取下来自动执行解决:在github上创建好一个公共仓库,把本地代码推送到github上 在自己的Windows电脑上安装好jenkins,登录jenkins,在系统管理->全局工具配置里面找到git,把git的path to Git executable修改为自己电脑上的git地址新建一个项目,源码管理里面配置git构建触发器选择 Poll SC

2021-08-05 11:29:13 526

原创 web自动化——解决不同操作系统模拟上传文件

场景:在使用selenium进行web自动化的时候,遇到了上传文件的用例,点击上传按钮选择需要上传的文件,上传成功后将文件处于服务器的地址返填到前面的输入框问题:无法通过selenium直接模拟上传文件的操作分析:因为上传文件的弹窗已经脱离了selenium的管控范围,需要引入三方插件或者三方库来模拟用户选择文件的操作解决思路:使用AutoIt该工具可以实现windows下的桌面自动化,但是我需要在mac下也能完成文件上传的操作,所以AutoIt不行。最后考虑采用pyautogui这个三方库

2021-07-26 16:18:27 373

原创 python-解决selenium拖拽元素不生效的问题

场景:需要将左侧菜单栏的元素拖拽到右侧画布上思路:定位到左侧的RDS抽取元素,通过ActionChains的drag_and_drop_by_offset方法将元素拖拽到指定坐标位置问题:核心代码如下:rds_ele = driver.find_element_by_xpath('//div[@role="tablist"]/div[1]/div[2]/div/div/div[1]')ActionChains(driver).drag_and_drop_by_offset(r

2021-07-21 14:59:24 3117 10

原创 robotframework-开启fiddler发送一个https的重定向请求出现的问题

背景:提供登录接口的是一个公共服务,该请求是https协议,登录成功后会重定向到所测应用fiddler截图如下:需求:使用robotframework做接口测试,为了方便查看接口传参是否传递正确,一般会把fiddler打开,捕获robotframework发送的请求robotframework代码如下:问题出现:请求运行了很久一直没有结果,就像卡住了一样,fiddler那边也一直没捕获到请求问题初分析:最开始怀疑是否和重定向问题有关,有一个参数叫:allo

2021-07-14 11:17:13 399

原创 遇到过的使用xpath定位不到元素的两种情况

第一种情况,根元素是根据ID去定位的如://*[@id="cascader-menu-3732-1"]/div[1]/ul像这种元素的ID中间那一串3732是变化的,每一次看到都是不一样的,故而不能作为定位元素的依据解决办法是可以把copy xpath换成copy full xpath,另外根元素ID属性也可以换成其他固定唯一的属性去定位第二种情况,xpath里面某个标签的数字是动态的如:下图所示想定位下拉框里面那个元素,通过xpath定位出来为/html/body/div[4]/div

2021-03-15 15:09:04 10906 3

原创 jmeter学习——如何设置content-type

通过jmeter发送的请求的content-type的默认值为application/x-www-form-urlencoded那么当请求的content-type的值为application/json时应该如何设置呢?在HTTP请求下添加一个配置元件-》HTTP信息头管理器,输入对应的名称、值即可...

2021-01-18 11:17:38 3903

原创 jmeter学习——使用fiddler抓取jmeter发送的请求

我所编写的很多博客,都是因为在实际使用中遇到了问题,为了解决该问题,会延伸出来很多东西,同时也算是记录一种学习的思路问题:使用jmeter发送一个post请求一直未得到预期的返回结果解决思路:分析可能是参数传错了,希望用fiddler抓取一下jmeter的请求对比一下和网页发起的请求参数有什么不同启动fiddler后,发现通过jmeter发起的请求fiddler并没有捕获到,需要解决如何使用fiddler抓取jmeter发送的请求在HTTP请求默认值的advanced中找到proxy ser

2021-01-18 11:11:11 644

转载 centos7下安装postgresql9.6

一、下载安装1、创建PostgreSQL9.6的yum源文件$ yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm2、安装PostgreSQL客户端$ yum install postgresql96 3、安装PostgreSQL服务端$ yum install postgresql96-serve

2020-11-02 14:58:27 358

原创 selenium——clear()使用了不生效,解决输入框没法清空的情况

前提:今天研究web自动化,准备模拟一个修改名称的操作,想的是定位都输入框元素,然后使用clear()方法清空输入框内容,再重新输入一些内容结果实际上发现并没有清空输入框内容,而是直接在输入框后面追加了(这里就可以确定元素肯定是定位到了的)clear()方法为什么会失效不得而知,在网上搜索了一大圈也没看到有人解释说为什么会没起作用(好想知道为什么不起作用……)解决办法:总得来说有三个解决思路一:双击输入框,然后重新输入内容(最笨,因为基本上双击选中不了全部内容)需要导入 from

2020-09-22 14:53:39 7511 9

原创 robotframework——使用Assign Id To Element为元素赋予临时id

前提:想执行一个js脚本,js脚本为了定位一个输入框并把输入框的内容清空(clear无效的情况下)该输入框元素是通过xpath定位的,但是js定位元素没有xpath的定位方法解决办法:Selenium2Library库提供了一个Assign Id To Element的关键字,该关键字可以为一个元素赋予临时id...

2020-09-22 11:24:18 683

原创 robotframework——fail和fatal error关键字的介绍

来源于内置测试库:BuiltInFail出现,表示测试用例运行失败,停止当前测试案例的执行,后续测试用例继续执行Fatal error出现,表示测试用例运行失败,停止当前及之后所有测试用例的执行配合runkeyword if使用,可以定义测试用例是否运行成功第一个测试用例:第二个测试用例:运行fail关键字后的结果:运行fatal error关键字后的结果:...

2020-08-31 16:24:09 2347

原创 robotframework3.2.1——导入selenium2Library库后没有open browser关键字

python版本:3.7.4robotframework版本:3.2.1selenium2Library版本:3.0.0RIDE版本:1.7.4.2在网上搜到的结果是把robotframework版本降级处理,降成3.1.2就可以了pip install robotframework==3.1.2重启RIDE后显示正常这里有个疑问,不太明白robotframework版本之间的区别,按理说在selenium2Library版本不变的情况下,robotframewor.

2020-08-31 15:09:06 5013 15

原创 robotframework——在外部资源(external resources)中删除资源引起的问题

在RIDE里面创建一个项目后,可以看到有一个external resources模块当引入的资源文件不在project管辖范围内时,就算是外部资源在suite里面引用project以外的资源文件,会自动添加到外部资源里面比如有两个项目project1和project2,此时在project2里面的某个suite里面加载project1下的某个资源文件加载后就会添加到external resource模块此时在external resources模块里面操作资源其实都是操作的pr.

2020-08-17 18:11:12 766 2

原创 robotframework——使用variables模块管理多套测试环境和管理测试数据

前提:目前有多套测试环境,每套测试环境都有不同的配置,比如这一套是禁用了root用户,另一套又是开启了HA,反正有好几套测试环境需求:期望在robotframework里面通过一个变量来控制每次在哪套环境上运行,而不是每次都手动去修改脚本里面的url解决办法:1. 先编写一个管理不同环境的url的python文件get_variables()函数,这个是rf指定专用返回变量的函数,返回的是一个字典对象,按照如下的配置,那么我在rf里面就可以引用main_url和un、pw这三个变量了。这个函

2020-08-17 13:56:17 1049

原创 robotframework——变量取名以小驼峰命名法和蛇形命名法出现的问题

一般来说,变量名如果是以多个单词组成,则多个单词之间以_分隔比如,mysql_params在python里面,mysql_params和mysqlParams是两个变量(应遵循python的命名规范,不建议随便给变量命名)但是在robotframework里面,会认为mysql_params和mysqlParams是一个变量从上图可以看出,给变量mysqlParams赋值,实际上将mysql_params的值也给修改了通过查看变量的内存地址也可以看出,在python...

2020-08-14 17:50:25 640

原创 robotfram——数据驱动 测试模板 test template的理解

在测试套件suite的settings里面有一项叫test template,具体来看看怎么使用1. 先在suite下创建了一个关键字叫test,在test template里面填写上test2. test关键字里面很简单,就是把两个参数进行加法计算3. 在suite下创建测试用例4. 直接创建的测试用例是不会有第一行param1和param2的黑色字体,需要手动在text edi里面去添加到*** Test Cases ***后面(反正我是这样手动添加的,...

2020-08-14 14:55:01 626

原创 robotframework——命令行运行测试脚本

整个工程路径为:D:\sqlw_test\robotframework\datahub4.0.81. 运行指定的测试用例用法:robot -t 测试用例名(可为正则表达式,如00*,也可以是具体的用例名) suite路径2. 运行指定的用例集用法:robotsuite路径3. 运行指定标签下的测试用例用法:通过-i 和 -e来指定标签,-i表示运行该标签下的测试用例,-e表示不运行该标签下的测试用例4. 设置rf输出文件的路径用法:通过-d来指定路径,...

2020-08-13 17:18:13 2075

原创 robotframework——标签的作用

为测试用例打上标签,可以更好的分类测试用例,也可以更好的控制测试用例的执行标签可以直接在测试用例里面设置,一个测试用例可以设置多个标签也可以在suite里面整体设置,force tags:为suite下的所有测试用例都打上这个标签,通过这里打的标签在测试用例里面是置灰了,不可编辑的default tags:如果suite下的测试用例没有打标签,就会打上这里设置的标签,如果测试用例已经打了标签,则不进行添加在run的时候可以选择:只运行这些标签的测试用例还是跳过这些标签的测试用例.

2020-08-13 15:16:14 1109

原创 robotframework——执行evaluate报错 failed: SyntaxError: invalid syntax (<string>, line 1)

起因:测试一个上传文件的接口,打开了一个文件后,调完接口后,心想着要细致,要记得把文件关闭了最开始的写法:由于要想关闭文件对象,所以需要把文件对象提取出来,设成一个变量,于是修改后变成一运行,执行到第三行就开始报错Evaluating expression '('core-site.xml',<_io.TextIOWrapper name='D:\\sqlw_test\\robotframework\\datahub4.0.8\\测试用例\\测试数据\\hdfs\\200\.

2020-08-12 11:39:40 10167 3

原创 robotframework学习——如何调用上传文件的接口,multipart/form-data如何传值

${core_filePath} Set Variable ${CURDIR}${/}测试数据${/}hdfs${/}200${/}core-site.xml ${file_tup} Evaluate ('core-site.xml',open(r'${core_filePath}','rb'),'text/xml') &{file} Create Dictionary file=${file_tup} #发送请求 $...

2020-08-12 09:59:39 2166 2

原创 robotframework——在suite setup中运行多个关键字以及setup的执行顺序

一般来说,在执行某个测试用例时,都会先初始化一些东西在suite里面,有suite setup和test setup,可以直接输入一个关键字,关键字后面用 | 分隔参数如果同时设置了suite setup和test setup,会先执行suite setup,再执行test setup在运行每一个测试用例前,都会先执行一次test setup如果想在setup里面执行多个关键字,就需要用到Run Keywords关键字,用法为:Run Keywords | 关键字1 | [...

2020-08-11 14:13:22 4235

原创 jmeter学习——RandomFromMultipleVars函数的使用,实现为参数随机分配值

需求:有个参数的值需要传递12、19、21这种无规律的值中的任一个解决办法:可以使用RandomFromMultipleVars函数通过函数助手自动生成,粘贴到对应参数值处即可具体的使用是在生成的函数${__RandomFromMultipleVars(,)}里输入一些变量名,比如上图中的jobId1、jobId2等另外定义一组用户定义的变量,把对应的变量名和值填好查看结果可以看到请求里面的id的值已经是随机的了...

2020-08-07 10:57:57 661

原创 robotframework-巧用evaluate关键字

evaluate后面跟python的一些表达式函数等,灵活使用evaluate关键字,可以实现不少需求场景一:查看变量的类型及其属性等 ${test_var} Set Variable 12 ${type_var} Evaluate type($test_var) ${dir_var} Evaluate dir($test_var)场景二:把一个list里面的元素转成int类型的 ${test_list} Cr

2020-08-05 15:15:01 3050

原创 robotframework——创建用户关键字(user keyword)提高代码的复用性

之前介绍了如何通过RF发送请求以及如何设置check点先看场景:有一个新增资源的接口,这个接口可以新增各种类型的资源,对传参又有各种要求,非空啊非法啊没权限啊等等,先大概罗列一下测试点,随便一写就非常多了下面这些测试用例有个特点就是都是调的同一个接口,只是传递的参数的值不同而已以及check的点不一样假设在不使用用户关键字的情况下,基本上都是下图那样的调用多写几个后发现标红那一块在重复使用,那我们可以考虑创建一个用户关键字,该关键字专门用于发送新增资源的请求,把接受到的参数拼凑.

2020-08-05 11:39:43 1218

原创 python——遍历字典对象移除某个key时报错RuntimeError: dictionary changed size during iteration

起因:需要提出字典对象中value为空的keydef test_dic(dic): for x in dic.keys(): if dic[x] is None: dic.pop(x) return dict_dic = {'a1': None, 'b1': 1}print(test_dic(t_dic))运行后报错:RuntimeError: dictionary changed size during iteration在

2020-08-05 10:31:44 402

原创 robotframework之post请求params传参和data传参引起的问题

看了下post requests关键字的介绍,捉摸着应该使用data传参,也按照data传参的要求设置参数结果运行后发现接口返回值和自己预期的完全不一样。。。 不知道哪里有问题。。。结果把data传参改成params传参后,居然调用成功了。。。打算通过fiddler监听一下,看下data传参和params传参有什么区别fiddler如何监听robotframework发起的请求通过对比发现:params传参的请求,参数是直接跟在请求url后面的,在WebForms表单里...

2020-08-04 16:50:25 1712

原创 robotframework之接口测试对请求返回值的处理,如何判断请求是否调用成功?

在如何通过robotframework发起第一个请求里介绍了如何用一个变量去接收请求的返回值下面来看看该返回值里面都包含些什么东西,我们如何判断一个请求是否调用成功?也就是我们如何来判断这个测试用例是跑成功了还是跑失败了?首先我们先看看返回值具体是什么:首先这里面用到了关键字Evaluate,evaluate后面跟python的一些表达式函数等,这里用到的type和dir就是python里面的函数,用于查看某个对象的类型和属性,注意type和dir里面变量名称的用法,是去掉了{}的把结果再赋

2020-08-04 15:51:43 4017 1

原创 robotframework之RIDE1.7.4.2中文乱码问题

前两天才基于python3.7安装的robotframework,RIDE的版本是1.7.4.2,运行测试用例后中文乱码在python安装目录\Lib\site-packages\robotide\contrib\testrunner,修改testrunnerplugin.py文件,将第565行的SYSTME修改为OUTPUT重启RIDE,再次运行显示正常...

2020-08-04 14:27:48 1203

原创 robotframework之接口测试-第一个post请求和请求之间如何传递session、cookies的自动添加

使用robotframework做接口测试,首先就是要先安装一个RequestsLibrary这个库,通过pip工具直接安装pip install robotframework-requests在suite里面导入RequestsLibrary库,显示黑色表示导入成功具体步骤:1.首先使用create session关键字创建一个会话,给该会话取一个别名叫api(在后续的请求里面可以直接使用该别名来使用),后面再跟服务器域名可以在session里面设置请求头,但是考虑到每个具.

2020-08-04 11:22:31 3111

原创 基于python3.7安装robotframework

首先需要安装python,我这里是安装了python3.7.4。然后安装pip工具python和pip的安装 通过pip工具直接安装robotframeworkpip install robotframework继续通过pip安装RIDE(robotframework IDE)pip install robotframework-ride安装完成后能正常打开RIDE则表示安装成功我的python3.7是很早就安装好了的,之前就先把python和pip安装好了,今天安装robo...

2020-08-03 18:15:09 434

原创 robotframework发送的请求为何fiddler没有监听到?

起因:通过robotframework发送了一个请求,这个请求老是得不到预期的返回值,又看不出具体是哪里没对,想通过fiddler对比下和浏览器发送的请求在参数上有什么区别问题:打开fiddler后,发现浏览器发送的请求,fiddler接收到了,但是通过robotframework发送的请求,在fiddler里面却没有显示解决思路:考虑到robotframework是基于python的,故而去网上查询了fiddler如何抓取通过python发起的请求得到了一点思路,既然在pyth

2020-08-03 17:58:06 563

原创 robotframework之解决导入httplibrary库一直标红的问题

基于python3.7安装的robotframework,通过pip安装了httplibrary库pip install robotframework-httplibrary在RIDE里面导入httplibrary库却一直标红在网上查了,还是因为python2和python3的兼容问题,真的是无与伦比的坑坑坑~首先需要安装livetest,直接通过pip install livetest是安装不起的,下载压缩包手动安装下载地址:https://files.pythonhost

2020-08-03 16:05:42 4358 10

原创 robotframework之RIED运行测试用例报错Suite ‘XXX‘ contains no tests matching name ‘XXX‘ in sin suite

今天重新给电脑安装部署了robotframework和RIDE,是基于python3.7.4安装的在RIDE里面创建了一个最简单的case,先简单测试下是否能正常运行,结果发现报错:[ ERROR ] Suite 'Test' contains no tests matching name 'Test.Testsuite1.case1' in suite 'Test.Testsuite1'.创建suite的时候format默认是txt,在以前基于python2.几安装的RF我都是使用的txt

2020-08-03 14:20:40 8036 2

原创 postman的学习——环境变量和全局变量的使用

在进行接口测试时,极大的可能B接口的传参会依赖于A接口的返回值,这个时候可以在tests模块里面,提取A接口的返回值,设为环境变量或者全局变量postman对变量的赋值和取值的函数用法:pm.globals.set("variable_key", "variable_value");pm.environment.set("variable_key", "variable_value");pm.globals.get("variable_key");pm.environment.get("va

2020-07-29 18:09:48 1891

原创 postman的学习——cookie是如何管理的

前提:我目前测试的系统需要登录后方可进行后续的一系列操作打开F12,查看发起的每一个请求,里面都携带着一个cookie什么是cookie通过postman发送一个添加资源的请求,并未在任何地方配置cookie信息,果然发送请求后又重定向到了登录界在网页上把cookie复制下来,添加到headers里面,key为Cookie,值就为把刚才复制下来的粘贴进去再次发送刚才的请求,结果成功了但由于session会过期(我所测试应用session过期时间是30分钟),所以不能...

2020-07-28 18:28:57 1896

空空如也

空空如也

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

TA关注的人

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