用LR录制文件下载并随机产生文件名
用LR录制文件下载并随机产生文件名
{H.IY:X.Tn0
8h&~-D|6fV0Action()51Testing软件测试网GE$nV}s,R
{51Testing软件测试网 }9sUS'q
int flen; //定义一个整型变量保存获得文件的大小51Testing软件测试网Vf0U.JK m
aJ-w@%xT?U0 long filedes; //保存文件句柄
"fY*e gvr$~P$}0 51Testing软件测试网o0eB6b;j~+[!x7Sw
char file[256]="/0"; //保存文件路径及文件名 51Testing软件测试网.e1BA.yHb
51Testing软件测试网5J;~1@\M:a vnf
int rNum; //定义一个随机数
#\({a.J8a\X0
x@:V@x/W r q0 char S[8]; //数字由int转为char
g[XB i%E6vwC0 51Testing软件测试网n L5^,~ucV(r[5d
srand(time(NULL)); //初始化
L*w'yejyQ0
]"o'F%{zkIH!E#zH"x0 rNum= rand() % 100; //获得0~100的随机数51Testing软件测试网$J6OfaS{!R"RyR
$m2au F*LR0 sprintf(S,"%d",rNum);//int 转换为 char51Testing软件测试网9q|M l%x y Ufe4u!S
"c$g2zVm0 strcat(file,"c://test");//将C:/test路径赋值给file
`%FF'``5Gb2z0
j-vC_W5\0 strcat(file,S);//在file后面加上随机数51Testing软件测试网 Sfm+Um5MW KTU!d*R
zkpz$u)s:q)N0 web_set_max_html_param_len("2000000");//设置页面接收最大的字节数,该设置应大于下载文件的大小
-r} Q@~G0
0RMk.JS$Me!O uOQ0//使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容51Testing软件测试网W^H:@1c D!k;A{8i9A-O
web_reg_save_param("fcontent",
9UGSI5a)I'm0 "LB=",51Testing软件测试网#F&O\ Ge&D.b*d:c S:P
"RB=",
#en^ R"p0 "Search=BODY",
Mf @ roZG!w#M'v\0 LAST);
X'Q.O4Tb0
X6v8HL9W.t#i2s7?0
jl%?9~s sT2m0 web_url("download",
)`6|:P|Qqb-l0 "URL=http://www.51testing.com/ddimg/uploadsoft/20100107/testingguifan.pdf", //下载页面的URL51Testing软件测试网w$LU8F R b/^_
LAST);51Testing软件测试网4T7i1yr,M5~
oe.v!B,V^:m0
w0P@/lRAD9vs5`0 flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); //获得文件大小51Testing软件测试网A9y P%E7x k
51Testing软件测试网"j U4_/I8DP O#j
if(flen > 0)51Testing软件测试网#s+oC?l-F
{
FUk7DdKY:M0 if((filedes = fopen(file, "wb")) == NULL)51Testing软件测试网2N ]~0S`7]5L
{
zb@ Kmq8p m0 lr_output_message("Open File Failed!");
9[G*|w5{)~e.Y)]:R051Testing软件测试网VL\!^$`9W;^
return -1;
z lA-g(E_iL:q0 }
^ x.l:|"bx7F0 fwrite( lr_eval_string("{fcontent}"),flen,1,filedes );51Testing软件测试网R#[M-zIH
51Testing软件测试网[:K"p"L$a0~A!y"zf
fclose( filedes );51Testing软件测试网`'v'e,dmA
}
0A|F.QwhL7O0
P6X%\\9`0 return 0;
/b{A8ry@0}
LoadRunner下载文件脚本
在看普泽关于pezybase的测试报告的时候,发现里面有用到jmeter(http协议)并发测试下载文件,考虑到后面可能需要在公司pezybase的并发下载,把之前使用过的loadrunner下载文件脚本重新运行和整理一下。
一、http协议
loadrunner使用http协议是无法录制到下载过程的,只会往服务器发送一个下载请求,其实服务器已经把数据返回给客户端了,但是loadrunner是录制不到保存文件到本地这个过程,所以就是需要我们手动把收到的内容保存打本地即可。(http协议上传文件的完整过程是可以直接录制的,在UC中已经使用过)。
注意:下面脚本中用到的LR函数如下,还使用了一些C语言基本的文件操作方法。在脚本中还可以加入一些判断来进行事务是否成功以及文件大小是否正确等的判断;
web_reg_save_param:关联函数,放在http请求前面,保存请求返回的内容;
web_url:http请求函数,向指定的url发送请求,下载文件也就是直接往下载链接发送请求;
web_get_int_property:获取下载请求返回的文件长度;
web_set_max_html_param_len:设置web_set_max_html_param_len方法中参数的最大长度,要求大于需要下载文件的大小;
Action() {
int flen;//定义一个整型变量保存获得文件的大小
long fileContent;//保存文件句柄,也就是文件的内容
char fileName[]="";//保存文件路径及文件名
char * strNumber;
strNumber=lr_eval_string("test{NewParam}");//获取一个随机数并转化成字符串 ,NewParam设置参数为随机类型,这里根据自己需要进行参数化设置
strcat(fileName,"C:/test/");//将路径保存到file变量中
strcat(fileName,strNumber); //拼接文件名
strcat(fileName,".pdf");//拼接后缀名,根据需要设置,最后就完成了完整的路径和文件名
web_set_max_html_param_len("20000");//设置参数的最大长度,注意该值必须大于文件的大小
//使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容
web_reg_save_param("fcontent", //返回的内容全部存储在fcontent这个参数中
"LB=",
"RB=",
"SEARCH=BODY",
LAST);
lr_start_transaction("下载文件"); #设置的事务开始点
#web_url方法你可以直接编写,也可以在启动录制的时候,输入下载链接URL进行简单录制,主要注意URL和Resource这两个参数即可;
web_url("file.php", #函数名,没有实际作用
"URL=http://forum.ubuntu.org.cn/download/file.php?id=129973&sid=78fc8d76767ef49b606595824ceb963d", #下载链接,也就是该链接输入到浏览器会提示下载,获取方法很多;
"Resource=1", #1表示是下载资源,0表示是页面资源
"RecContentType=application/octetstream",
"Referer=",
"Snapshot=t1.inf",
LAST);
flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);//获取响应中的文件长度
if(flen > 0)
{ //以写方式打开文件
fileContent = fopen(fileName, "wb");
if(fileContent == NULL) #看是否正确打开了需要保存下载内容的文件,fileName是上面准备组织的文件路径;
{
lr_output_message("打开文件失败!");
return -1;
}
fwrite(lr_eval_string("{fcontent}"), flen, 1, fileContent);//写入文件内容
fclose(fileContent);//关闭文件
}
lr_end_transaction("下载文件",LR_AUTO);#事务结束点
return 0;
}
二、java user协议
使用java user协议更简单,就是直接使用java编写一段从指定链接下载文件的脚本即可;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import lrapi.lr;
public class Actions {
public int init() throws Throwable
{
return 0;
}//end of init
public int action() throws Throwable
{
int DownLoadSize = 0;
String path = "c:\\temp\\"; //设置下载文件保存路径
String vuid = String.valueOf(lr.get_vuser_id()); //获取当前虚拟用户ID并转换成字符串
DownLoadSize = UrlTools.getHttpFileByUrl("http://forum.ubuntu.org.cn/download/file.php?id=129973&sid=78fc8d76767ef49b606595824ceb963d",vuid,path); //调用UrlTools.getHttpFileByUrl()
return 0;
}//end of action
public int end() throws Throwable
{
return 0;
}//end of end }
class UrlTools
{
public static int getHttpFileByUrl(String address,String userid,String path)
{
//定义下面需要用到的变量
URL url;
URLConnection conn = null;
int BUFF_SIZE = 1024;
byte[] buf = new byte[BUFF_SIZE];
int DownLoadSize = 0;
BufferedInputStream bis;
FileOutputStream fos = null;
int size = 0;
try
{
url = new URL(address); //address为传递进来需要下载的链接
conn = url.openConnection();//使用url实例化需要下载的链接
bis = new BufferedInputStream(conn.getInputStream()); //把需要下载的文件内容保存在bis这个输入流中
fos = new FileOutputStream(path+"\"+userid+"test000001"+“.pdf”));//组成完整路径,并实例化到输出流,这里可以进行参数化,如参数化文件名, // 路径需要事先手动创建好,当然你也可以在脚本中创建实现不同的路径
System.out.println("需要下载的文件大小为:" + conn.getContentLength()/1024 + "k");
while((size = bis.read(buf)) != -1) #按照设置的buf大小写文件并记录下载的大小
{
fos.write(buf,0,size);
DownLoadSize = DownLoadSize+size;
}
bis.close();
fos.close();
System.out.println("用户" + userid + "下载" + url +"完成!");
}catch(MalformedURLException e)
{
System.out.println("下载发生异常:");
e.printStackTrace();
}catch(IOException e)
{
System.out.println("下载发生异常:");
e.printStackTrace(); }
return DownLoadSize/1024;
}
}
用LR录制文件下载并随机产生文件名的更多相关文章
- lr录制选项设置代理
解决录制时浏览器打不开录制时录不到脚本等浏览器兼容问题一.lr录制选项设置代理1.点击Options 2.点击Port Mapping→Newentrv 3.lr代理设置 ·Socket Servic ...
- 【Loadrunner】使用LR录制HTTPS协议的三种方法
使用LR录制HTTPS协议的三种方法 一.最简单的方法:浏览器配置打开浏览器,安装证书,配置完成后直接用http协议录制即可(配置完成的标识就是打开网页,不显示安全提示) 二.LR配置修改操作步骤如下 ...
- LR录制附件上传后,回放报错
使用LR录制附件上传后,点击回放,发现报错:没有找到上传的文件 Could not obtain information about submitted file "C:\Users\Adm ...
- 性能测试学习第一天-----概念、环境、LR录制&参数化
1.性能测试的概念: 通过一定的手段,在多并发情况下,获取被测系统的各项性能指标, 验证被测系统在高并发下的处理能力.响应能力.稳定性等,能否满足预期.定位性能瓶颈,排查性能隐患,保障系统的质量,提升 ...
- LR录制Flex+Web,登录功能之登录密码出错的处理
在LR中录制好更改密码脚本,Controller中使用少量用户进行:单用户多迭代.多用户单迭代.多用户多迭代,运行正常,于是使用490Vuser+2iteration修改980个用户的密码,部分 Vu ...
- LR 录制时,web_link出现乱码
在录制时,用到了web_link,但是web_link不能实别中文,因此在回放时,不能识别web_link,问题如下: web_link("??", "Text=?? ...
- php之上传小案例,根据时间:月日分创建目录并随机生成文件名
<?php /* 接收文件,并分目录存储,生成随机文件名 1.根据时间戳,并按一定规则创建目录 2.获取文件名的后缀名 3.判断大小 */ //根据月日分计算并创建目录 function mk_ ...
- LR录制脚本的时候打不开浏览器问题
使用Chrome时,显示开始录制但是Action中无任何脚本,即脚本没成功生成. 使用Firefox(最新版),一直关闭程序,详细信息有StackHash_0a9e. 使用IE11时,也是显示开始录制 ...
- Firefox 在LR录制过程中添加例外的问题解决方法
用lr调火狐打开网页 会报证书安全问题 证书安全提示目的是告诉你这个服务器使用的证书可能不安全,要不要信任,你自己决定,不信任就不能访问.为什么会报证书安全,因为浏览器没添加该证书.或者由于性能工具 ...
随机推荐
- Codeforces Round #384 (Div. 2) A B C D dfs序+求两个不相交区间 最大权值和
A. Vladik and flights time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Linux系统之路——用CentOS 7打造合适的科研环境
安装CentOS CentOS 7的安装与其他Linux发行版的安装差不多,个别地方稍有不同. 准备工作 准备材料 U盘:容量700M以上,用于制作U盘启动盘,因为在制作启动盘时会格式化U盘,所以U盘 ...
- Meeting HDU - 5521 虚点建图
Problem Description Bessie and her friend Elsie decide to have a meeting. However, after Farmer John ...
- Rabbitmq -- rpc
一.前言 MQ本身是基于异步的消息处理,前面的示例中所有的生产者(P)将消息发送到RabbitMQ后不会知道消费者(C)处理成功或者失败(甚至连有没有消费者来处理这条消息都不知道).但实际的应用场景中 ...
- Ajax笔记-加强版
AJAX : Asynchronous JavaScript and XML 异步JavaScript和XML 用javascript异步形式去操作xml 进行数据交互 节省用户操作,时间 ...
- extjs grid demo
Ext.onReady(function () { var store = Ext.create('Ext.data.Store', { fields: ['id', 'name', 'account ...
- bzoj 3261: 最大异或和 (可持久化trie树)
3261: 最大异或和 Time Limit: 10 Sec Memory Limit: 512 MB Description 给定一个非负整数序列 {a},初始长度为 N. ...
- $file函数
引用:http://www.jb51.net/article/26508.htm 如: 复制代码代码如下: <form enctype="multipart/form-data&quo ...
- python之supervisor进程管理工具
supervisor是python写的一个管理进程运行的工具,可以很方便的监听.启动.停止.重启一个或多个进程:有了supervisor后,就不用字节写启动和监听的shell脚本了,非常方便. sup ...
- python操作adb代码
adb命令的练习 #!/usr/bin/env python # encoding: utf-8 import os import re nameplt=re.compile("packag ...