在Windows下使用RobotFramework下载文件

本文介绍了在Windows环境中使用RobotFramework进行文件下载的方法。由于RobotFramework本身无直接下载Keyword,作者选择了通过运行CMD命令来实现。具体实现过程中,利用Keyword运行系统级指令,结合时间戳防止下载文件名冲突,并通过返回值判断下载是否成功。

在Windows下使用RobotFramework下载文件

前言

这个需求其实很少见,但是在需要下文件进行测试的时候还是很头疼的,研究了一天,参考了网上的一些资料都写的比较简单,故写下来供参考。

方案制定

首先要明确一件事,我所知的RobotFramework目前没有Keyword可以直接用来下载文件,我想到的有两种方法可以用来下载文件。

  • 打开浏览器模拟点击下载
  • 在RobotFramework上运行CMD命令进行下载

打开浏览器模拟点击下载

这种方法的看起来还是很简单的,但是仔细实施起来会非常困难,因为下载文件时,有些浏览器会弹出一些框,而这些框需要引入其他库去操作,过于麻烦,故选择第二种方式。

在RobotFramework上运行CMD命令进行下载

在RobotFramework的OperatingSystem库中,有一个叫Run and return rc的Keyword,这个Keyword可以用来运行一些系统级别的指令,例如,在Windows下可以运行cmd命令;在Linux下,可以运行shell脚本。经过查询和反复实验,最后发现使用bitsadmin效果很好。就开始着手写Keyword。

需要使用到的库
  1. OperatingSystem
  2. BuiltIn
  3. DateTime

方案实现

首先是编写cmd指令,将文件下载到c盘的tmp下的pkg文件夹中并在系统中测试通过:

robotframework接⼝测试案例 1.关键字:post请求 *** Settings *** Library RequestsLibrary *** Keywords *** post.request [Arguments] ${url} ${api} ${data} ${headers} [Documentation] post请求封装 #创建session create session _session ${url} headers=${headers} #发送请求 ${respose} post request _session ${api} data=${data} headers=${headers}    #校验请求是否成功 Should Be Equal As Strings ${respose.status_code} 200 ${json}= set variable ${respose.json()}    #返回请求结果 [Return] ${json} 2.关键字:接⼝调⽤post请求: *** Settings *** Resource ../Public_KeyWords/post请求.robot *** Keywords *** com.souche.shop.api.TgcShopOperateService [Arguments] ${all} ${headers}= create dictionary _dubbo_token=souche_http_token _method_name=addTgcShop Content-Type=application/x-www-form- urlencoded; charset=UTF-8 ${resq} post.request http://IP地址:端⼝ /com.souche.shop.api.TgcShopOperateService ${all} ${headers} [Return] ${resq} 3.关键字:连接数据库 *** Settings *** Library DatabaseLibrary *** Keywords *** connect.database [Arguments] ${base_name} ${user_name} ${password} ${host} ${port} #连接数据库 connect to database using custom params pymysql database='${base_name}',user='${user_name}',password='${password}',host='${host}',port=${port} 4.接⼝参数变量: #-*- coding: utf-8 -*- #添加弹个车店铺 variables={ "name":"测试店",#店铺名称 "short_name":"测试店", #对外简称, "nickname":"测试店", #对内简称, "isTest":"1",#是否是测试店 "phone":"13251028260",#⼿机号 "address":"北京王府井",#'地址', "area":"西直门128号" ,#地区,省市区拼接, "province":"北京",#省 "city":"北京",#市 "region":"东城区",#地区 "address_call":"0571-3399456",#座机号码 "coordinate":"120.288383,30.203987", #⾼德坐标 } 5.测试case: *** Settings *** Documentation 添加弹个车店铺 Variables ../Resource/add_tgcshop.py Resource ../KeyWords/Tgcshop_add.robot Resource ../Public_KeyWords/connect_database.robot *** Test Cases *** 增加弹个车店铺 ${variable}= evaluate json.dumps(${variables}, ensure_ascii=False, encoding='UTF-8') json log ${variable} ${par}= create dictionary shopQO=${variable} ${req}= com.souche.shop.api.TgcShopOperateService ${par} ${result}= set variable ${req['data']['success']} should be
Robotframework⼊门教程(⼀) 最近⼯作中⽤Robot Framework框架来做⾃动化,所以,花时间学习了⼀下,⽹上好的⽂档不多,⼤多都是复制粘贴如何安装环境。要么就是介绍了⼀堆RIDE 的界⾯,活活把这么强⼤的⼀个⼯具讲成了个photoshop,我⽬前⽤了1个多⽉,这个⼯具很强⼤,简单写两句。 ==安装== ⾸先其实RIDE是个好⼯具,但是安装起来真⼼费劲,当时我的MAC上安装的时候google了两天,⼀个问题接⼀个问题。 我这边呢就不⽤RIDE了,想⽤呢⾃⼰想辙安去。 安装命令: pip install robotframework ==第⼀个testcase== RF的特点什么的就不多说了,⽹上有的是,撸起袖⼦就是⼲。 新建demo.robot⽂件,内容如下。 *** Test Cases *** First Case Log Hello World! warn Second Case ${res} Evaluate 1+2+3 Should Be Equal ${res} 6 Third Case ${res} Evaluate 'i'*3 Length Should Be ${res} 运⾏ robot demo.robot。将得到如下 上⾯的例⼦有三条case,第⼀条调⽤内置关键字Log, 第⼀个参数是"Hello World! " ,第⼆个参数是"warn"。就是简单打印⼀条log,后⾯的是log的等级,默 认输出info以上的log到console,截图中可以看到first case中打印了 Hello World!等级为WARN。 第⼆条case,调⽤内置关键字Evaluate,参数是"1+2+3",结果赋值给变量res(RF的语法是⽤$和⼤括号代表标量变量,还有其他类型的变量以后再说)然后调 ⽤Should Be Equal校验结果是否等于6,因为默认是字符串格式,所以second case 执⾏结果是FAIL。 第三条case,和第⼆条类似,同样调⽤Evalutate 赋值给变量res为"iii",校验变量长度为3,执⾏结果为PASS。 最后三⾏显⽰这次执⾏结果⽣成的⽂件,output.xml,log.html,report.html。打开log⽂件如下,结果报告有什么优点就不说了,⾃⼰去看。output.xml先放放以后 再说。 前⾯说过RF中默认的都是格式是String,那么怎么给关键字传其他的类型,答案是⽤变量。修改second case如下: Second Case ${res} Evaluate 1+2+3 Should Be Equal ${res} ${6} 再次执⾏robot demo.robot 这次的结果
RobotFramework⼊门基础教程 1.RobotFramework运⾏环境的搭建 运⾏环境的搭建 在使⽤ RF(Rebot framework)的时候需要 Python 或 Jython 环境,具体可根据⾃⼰的需求来确定。本⽂以在有 Python 的环境的机 器上安装和使⽤ RF 为例。 在配置过程中需要安装如下包:python 2.7、wxPython、robot framework、robot framework ride、robot framework selenium library。 安装 Python 2.7 RF 框架是基于 Python 语⾔的,所以⼀定要有 Python 环境。可以通过下⾯的下载页⾯下载对应的 Python 版本。 下载页⾯:。 下载完成后,选择默认项进⾏安装。 安装完后,需要设置环境变量:计算机—属性—⾼级系统设置—环境变量—系统变量—Path,写⼊ C:\Python27 和 C:\Python27\Scripts(更改为您指定路径即可)。 同时我们也可以通过 DOS 环境来验证安装的 Python 信息。 安装 pip 安装完Python后,进⼊Python安装⽬录,例如:C:\Python27\Scripts, 执⾏easy_install.exe pip 则python27\Scripts⽂件夹下会出现⼀系列和pip有关的⽂件,其中有pip.exe,说明pip命令可以使⽤ 在cmd下输⼊"pip",如果能识别"pip"指令,则说明pip安装成功了。 也就是说会出现如下的画⾯: 安装 WxPython 下载页⾯: 。 在选择版本下载的时候要注意选择与 Python 版本对应的版本,并且选择 unicode 版本,⽐如版本:wxPython2.8-win32-unicode- py26.exe,否则安装完成后不能⽀持中⽂。 下载完成后,选择默认项进⾏安装即可。 除此之外,还可以通过⼀下的pip指令进⾏安装: pip install wxPython 安装 PyCrypto 下载页⾯1:。 下载页⾯2:下载页⾯:。 选择对应的 pycrypto installer 版本,进⾏默认安装。需要在安装库(如 SHHLibrary)之前进⾏安装,否则会出现 错误"Can't find vcvarsal.bat"。 除此之外,还可以通过⼀下的pip指令进⾏安装: pip install pycrypto 如果你的python版本超过了以上⽹站提供的PyCrpyto所对应的版本,例如,当你的python版本为3.7时,你可以使⽤⼀下pip指令进⾏安 装: pip install pycryptodome 安装 Robot Framwork 进⼊ Python 的安装路径,执⾏命令"pip install robotframework"或者通过下载页⾯ 下载源码。 解压后,执⾏命令"python setup.py install"进⾏安装。进⼊ Python 的安装路径,执⾏命令"pip install robotframework"。 安装 robotframework-ride 对应需要安装的版本 python3.7 robotframework==3.1 wxPython==4.0.3(尝试⽤4.0.4发现还不⾏) robotframework-ride==1.7.4dev(之前1.7.3rc1出现保存不了的bug,暂时还未发布,需要下载源码) robotframework和wxPython都⽤pip安装就可以了,需要注意版本 ride的下载路径(下载源码安装) https://github.com/robotframework/RIDE 下载完毕后进⾏解压,在解压后的⽬录下进⼊cmd界⾯,然后输⼊指令:python setup.py install进⾏安装。 安装成功后,会在桌⾯显⽰⼀个图标,可以直接打开ride 或者直接在cmd命令窗⼝输⼊"ride.py" 或者在\\Python37\Scripts底下双击ride.py。 打开后如图: 安装需要的 Library 如 selenium2library ,archivelibrary,SSHLibrary ,ftplibrary 等。进⼊ Python 的安装路径,分别执⾏以下命令: 清单 1. 安装 Test Library pip install robotframework-selenium2library pip install robotframework-archivelibrary pip install robotframework-sshlibrary pip install robotframework-ftpli
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值