03 2020 档案
摘要:RF有一些操作指令不存在,需要自己添加方法,比如selenium里有click_and_hold指令(鼠标保持点击状态)而RF内没有。所以需要在库文件里加入这个方法 C:\Python27\Lib\site-packages\SeleniumLibrary\keywords 目录下找到”elemen
阅读全文
摘要:场景:新建库文件,库文件内新增方法,用于robot调用执行原始方法内不具备的能力。具体方法图下 1、找到目录C:\Python27\Lib\site-packages 2、新增文件夹“NewLibrary” 3、文件夹内增加一个init文件,文件具体内容参考下方文件 4、然后再新建一个文件,这个文件
阅读全文
摘要:如下图 暂无评论的按钮在整页下方,需要拖动页面才会显示出这个按钮,否则不可点击 Mouse Down 提供拖动页面的能提 这个方法因selenium2library和AutoItLibrary 都有,所以方法应用前需要加上selenium2library Selenium2Library.Mouse
阅读全文
摘要:如图,活动时间是选择的方式选取,虽然可以通过定位年月日时来实现选择,这务必带来很多脚本内容。这里用另外的方法实现 1、使用“get time”指令获得当前系统时间 ${1} = 2017-10-27 17:33:38 2、然后把${1} 写入开始时间 3、使用“add time to date”指令
阅读全文
摘要:上图案例 商品添加后,匹配“商品名称”,“现价”,“库存” 首先获取“商品名称”,“现价”,“库存”对应元素的参数,且负值给某变量 然后使用should contain指定与变来进行匹配,检查是否对应得上
阅读全文
摘要:如上图,添加商品需要上传商品图片,如此,设计脚本时候会填入图片的路径,使自动化能够自动到目的路径内获取图片上传 C:\\Users\\Beckham\\Desktop\\test2\\autoTest\\评价图.png 如果使用上面这个路径,那么他人使用这套基本,这图片一定要存在这个路径下,否则读取
阅读全文
摘要:需求分析: 如下图,诸多步骤中可能共用某些共同的步骤,比如都需要登录会员 此,可以把登录的操作写成模块化,插入其他脚本供其他脚本调用,如此可以节省不少脚本量 上图为会员登录的操作。 具体实施如下: 1、右键autoTest,点击New Directory。 2、弹出框输入Name 3、保存后目录下生
阅读全文
摘要:在一次测试中,可能需要使用多个不同的会员,即需要多注册多个会员。如此配置单一参数化是无法满足对所有注册会员名的统一管理,这里引入参数变量组来实现 步骤如下: 1、脚本目录点击总目录,右键点击New Resource 2、命名,保存,同时也可以看到文件的存储路径 3、保存后目录生成子菜单 4、点中目录
阅读全文
摘要:脚本在每次执行的时候,自定义输入的内容,每次均需要手动去修改 比如,添加商品,上一次执行设置的商品名称为“商品1”,这次再执行“商品1”就会导致冲突 如果仅仅是改填商品名称一项,后面执行检查的脚本又匹配不到检查对象(验证是否添加成功,校验添加的商品名称前后是否一致) 所以,这里引入变量 步骤如下:
阅读全文
摘要:上图,会员修改参数后,提示修改成功,弹出层会暂时冻结页面,导致“会员”菜单不可点击 除了使用sleep加等待时间的方法解决,本教程用“execute javascript”来解决这个问题 具体写法为 execute javascript document.getElementById('hnav-1
阅读全文
摘要:解决方法: 新建商品,上传商品图片,RF无法执行操作,需要调用其他工具或者方法来解决这个问题,解决方式如下: 这个元素有ID,但是采用的是flash的方式提交,所以原有的“choose file”是无法把图片路径传递过去 通过使用AutoItLibrary来实现图片上传 方法如下 安装: (谷歌驱动
阅读全文
摘要:在应用某个关键字(引入模块)时候,关键字(模块)内可能存在应用变量或者变量组,脚本引用该关键字(模块)时候,需要在后面带上参数,传递进关键字(模块)中,否则出现模块内的变量没有写入值。具体如下: 上图将注册流程应用成关键字(模块)供其他脚本调用 其中对会员帐号进行了参数化处理 在当前界面的Argum
阅读全文
摘要:会员调整成分销商后,分销商列表寻找该记录的方法
阅读全文
摘要:应用场景: 下图线下支付,在退款前需要勾选这种支付方式,否则无法实现支付。 如果在测试脚本内即加入勾选指令,那么在下次执行的时候就会再次勾选,从而造成去除勾选的操作 对比一下勾选前后,勾选框元素内容组成,差别在于“checked” 使用上面的命令(通过打印id=EnableOtherDraw@che
阅读全文
摘要:订单测试过程中,对库存的校验是很关键的步骤 下面这个案例即实现对订单前后库存检查、公式计算、结果匹配,输出测试结果。具体脚本如下图 步骤如下: 1、获取订单前的库存 2、订单流程 3、获取订单后的库存 4、使用“should be equal as integers”计算结果,库存在订单前后相差“1
阅读全文
摘要:场景分析: 上图“通用模版测试”内容 满足,如果当前页面存在这条数据,即结束执行本条用例,自动执行下一条。如果没有,则调用新建模版关键字,执行新建模版。 脚本如下 1配置运费模版 [Documentation] 依赖脚本:登录后台 click link link=设置 #点击设置模块进入设置模块 c
阅读全文
摘要:Robot framework 在同一个浏览器中切换不同选项卡,通过title来定位选项卡。Title存在不唯一的情况,选择不同的选项卡有一些困难。下面的教程,通过修改selenium配置文件,来实现更加便捷的操作。 操作如下: D:\Python27\Lib\site-packages\robot
阅读全文
摘要:场景预设:从列表内读取手机号,自动化执行微信加好友,直至选择完所有数据后,脚本停止执行 1、建一个备选数据表,表内列待添加的手机号数据 2、脚本的主要流程新加好友-输入手机号-添加好友-判断好友是否存在-确认添加-执行完毕。脚本在输入手机号做循环 FOR index 从@电话号码内取值循环,inde
阅读全文
摘要:如上图,每次新增数据均显示在最上面,且这个表格没有自定义查询的功能。 这给校验添加数据是否成功增加了难度(常规方式是检查第一行数据) 本次案例的逻辑是 使用Get Matching Xpath Count指令 先获取列表内一共有多少条数据,获得数量后把数量传递到需要定位的元素路径内 比如,获得列表内
阅读全文
摘要:1.普通的For循环 在一个普通的For循环中,循环开始的关键字是 :FOR ,其中的:用于与一般关键字做区分,对于循环结 构体内的每一行,使用 \ 作为改行的行首关键字。对于循环中的变量,可以在 IN 关键字后给出所有变量, 也可以从一个列表中进行赋值,每次循环从列表中取出一个值。例如: 1)给出
阅读全文
摘要:倒入两个库:ExcelLibrary,Collections 首先,必须注意文件格式为xls 表格内容 open_Excel C:\\Users\\Beckham\\Desktop\\a.xls #打开xls文件 @{read_columnA} get_column_values Sheet1 0
阅读全文
摘要:如上图,验证“首页”是否添加成功,我们就通过验证页面上是否存在“首页”这个关键字,来确认数据是否添加成功 RB的写法如上图,原理是以文本输出“首页”元素内容 且定义该内容的为“${前台一级导航名称}” 然后使用“should contain”API匹配上一部定义的内容
阅读全文
摘要:1、传入 上图,购买商品的脚本公共化,但是每次购买的商品并不一样,所以把商品做参数处理传递到keyword中去执行 Keyword写法如下 2、传出 上图,keyword内获取数据然后传递到case中,以便case中使用,keyword的编写方法如下
阅读全文
摘要:如上图,商品添加完成后,需要验证商品是否添加成功,通过验证商品列表内是否存在指定名称的商品即可实现验证 浏览器自动获取的xpath=//*[@id="ProductName-divrid53708"]/div/div[2]/p[1]/a,里面涵盖随机数,无法使用 上图html结构,通过CSS来实现元
阅读全文
摘要:参考https://blog.csdn.net/ywyxb/article/details/64126927 注意:无论是在线还是离线安装,最好在管理员权限下执行命令 1、安装Python36(32位),配置环境变量C:\Python36;C:\Python36\Scripts;C:\Python3
阅读全文
摘要:Jmeter线程组下脚本,当设置好线程数后,该组下所有脚本均会执行对应的次数 测试场景: 1,后台登录新建拼团活动 2,获取拼团ID 3,多个会员前端登录,传入拼团ID参加拼团活动 要实现上面的测试场景,需要创建两个线程组,线程组A创建活动,线程组B参与活动,从A获取的拼团ID设置为全局参数,传到B
阅读全文
摘要:下图内容为请求后的返回值,红色箭头内容是需要正则处理传参给后面的接口使用 其中==后面的\U0026为未编码内容 而实际能够提交的链接为下图“&” 所以,图1请求后需要先转码,然后再做正则处理 上图红色箭头,后置处理器加入转码代码,代码具体参考下链接 http://www.cnblogs.com/I
阅读全文
摘要:如,系统返回data 通过正则获取data后的数据,且名称定义为id 然后通过${id}的方式传参给需要使用的地方
阅读全文
摘要:如下图,“全站链接扫描”脚本的参数化文件存储在同一目录的参数化文件夹内 预计实现读取该文件使用相对路径(非绝对路径,避免脚本在另一台电脑存在别的目录下能正常读取参数文件) 如读取“链接-代理商后台”参数文件,该文件路径C:\Users\Beckham\Desktop\jmeter\参数化文件\链接-
阅读全文
摘要:如下图,若CSV文件内的参数为中文时候,jmeter在读取数据时会显示为乱码且不可用 这里与创建CSV参数文件的编码格式有关系 系统自带的编码方式只有红圈内几项,只有编码格式为GBK时,才支持读取中文内容
阅读全文
摘要:特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 场景描述: 登录用例A,参加活动用例B,用户参加活动需要经历登录和发起活动流程。用例A登录,返回登录数据。用例B通过A返回的用户ID拼接成参加活动的链接。
阅读全文
摘要:JS的正则表达式的写法,需要对原有正则表达式进行适当加工才可正常使用 如:(正则表达式规则取到“/did1280064/Login”) 常规的正则表达式为“did(\d+)/Login” 而js的书写方式是“/did(\d+)\/Login/” 对比可发现,js前后会多出“/” 且两个参数之间需要增
阅读全文
摘要:特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 1、描述,用例配置环境变量后会在请求前自动加上域名和请求头信息。请求1后返回一个链接,请求2发起访问链接,链接是第三方的,所以不需要加域名和请求头。本案例解
阅读全文
摘要:特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 1、场景分析 注册会员流程共计有添加数据,校验数据,提交数据等步骤,每一步骤都需要传出注册会员账号,如果不把会员账号做成全局参数,则每次都要修改所有的步骤,
阅读全文
摘要:当某个接口的提交参数类型为“array”时,该接口被自动化测试调用会转换成text类型。 导致执行测试的时候,整个参数转化json格式不正确 解决方法是在 格式不正确的项后面 配置正确的格式数据
阅读全文
摘要:如下图,订单编号的参数在data父字段内 Eolinker返参校验的写法就需要有些变化 先写Data父参,添加子字段,再写子参 预期结果不支持全局变量 可通过添加绑定,绑定前一个接口返回参数,进行匹配
阅读全文
摘要:特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 一、案例1 1、场景描述: 后一个请求需要前一个请求提供的数据来构造请求数据,如新建商品后返回商品ID,访问商品需要获取ID来构造请求,实现商品页请求测试{
阅读全文
摘要:如上图红色箭头,需要校验返回值内是否包含”创建满足条件的优惠券”这一内容 如果需要满足以上校验,最好的方法就是使用正则进行匹配 切换到正则匹配,输入需要校验的内容,即可实现正则匹配校验 上面的案例是判断存在数据,校验通过,接口执行通过。 如果是判断数据存在,校验失败,接口执行不通过,或者数据不存在,
阅读全文
摘要:特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 场景描述: 删除(清空)购物车接口,需要传入获取的每一项商品数据 这里就有一个问题,购物车内有多少数据是不可知的,查询出来的结果均显示为下方格式 所以,对查
阅读全文
摘要:后置代码内加入如下代码: function sleep(milliSeconds){ var startTime = new Date().getTime(); // get the current time while (new Date().getTime() < startTime + mil
阅读全文
摘要:特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 如下图,请求参pageName参数为中文,提交后报错 需要把请求数据编码后提交,预处理请求预处理输入“raw=JSON.stringify(raw)”解决问
阅读全文
摘要:如下图,获取H5首页菜单,验证菜单名是否正确 找到对应的接口,查看返回数据,菜单名字存放在TabBar下的3个数组内 Eolinker传统的JSON参数定位(json结构定位)只能校验第一个数组内的pageName 而测试预期是需要拼配所有的菜单名称,有两种方法解决这个需求 方法1、JSON参数定位
阅读全文
摘要:-- r.status_code #响应状态码 -- r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩 -- r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None -- r.json() #Re
阅读全文