用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录制文件下载并随机产生文件名的更多相关文章

  1. lr录制选项设置代理

    解决录制时浏览器打不开录制时录不到脚本等浏览器兼容问题一.lr录制选项设置代理1.点击Options 2.点击Port Mapping→Newentrv 3.lr代理设置 ·Socket Servic ...

  2. 【Loadrunner】使用LR录制HTTPS协议的三种方法

    使用LR录制HTTPS协议的三种方法 一.最简单的方法:浏览器配置打开浏览器,安装证书,配置完成后直接用http协议录制即可(配置完成的标识就是打开网页,不显示安全提示) 二.LR配置修改操作步骤如下 ...

  3. LR录制附件上传后,回放报错

    使用LR录制附件上传后,点击回放,发现报错:没有找到上传的文件 Could not obtain information about submitted file "C:\Users\Adm ...

  4. 性能测试学习第一天-----概念、环境、LR录制&参数化

    1.性能测试的概念: 通过一定的手段,在多并发情况下,获取被测系统的各项性能指标, 验证被测系统在高并发下的处理能力.响应能力.稳定性等,能否满足预期.定位性能瓶颈,排查性能隐患,保障系统的质量,提升 ...

  5. LR录制Flex+Web,登录功能之登录密码出错的处理

    在LR中录制好更改密码脚本,Controller中使用少量用户进行:单用户多迭代.多用户单迭代.多用户多迭代,运行正常,于是使用490Vuser+2iteration修改980个用户的密码,部分 Vu ...

  6. LR 录制时,web_link出现乱码

    在录制时,用到了web_link,但是web_link不能实别中文,因此在回放时,不能识别web_link,问题如下: web_link("??",   "Text=?? ...

  7. php之上传小案例,根据时间:月日分创建目录并随机生成文件名

    <?php /* 接收文件,并分目录存储,生成随机文件名 1.根据时间戳,并按一定规则创建目录 2.获取文件名的后缀名 3.判断大小 */ //根据月日分计算并创建目录 function mk_ ...

  8. LR录制脚本的时候打不开浏览器问题

    使用Chrome时,显示开始录制但是Action中无任何脚本,即脚本没成功生成. 使用Firefox(最新版),一直关闭程序,详细信息有StackHash_0a9e. 使用IE11时,也是显示开始录制 ...

  9. Firefox 在LR录制过程中添加例外的问题解决方法

    用lr调火狐打开网页  会报证书安全问题 证书安全提示目的是告诉你这个服务器使用的证书可能不安全,要不要信任,你自己决定,不信任就不能访问.为什么会报证书安全,因为浏览器没添加该证书.或者由于性能工具 ...

随机推荐

  1. BNU-2017.7.5排位赛3总结

    链接:https://www.bnuoj.com/v3/contest_show.php?cid=9148#info A题 满足条件的只有(1,2,4),(1,2,6),(1,3,6),所以先满足4, ...

  2. CDN问题积累

    我见到的CDN服务器只支持GET方法,只能以URL为索引来缓存内容. 有的时候我用相同的URL,相同的GET方法,但是不同Header参数时,后台对应的应该是不同的方法,返回不同的结果. 而这时候使用 ...

  3. C++对象与其第一个非静态成员地址相同

    由于对象的内存空间里是按顺序依次存储了它的非静态成员变量,因此对象和它的第一个非静态成员变量的地址是相同的: class A { private: int i; } int main() { A a; ...

  4. poi对word的操作(总结)

    ★★★ POI在读写word docx文件时是通过xwpf模块来进行的,其核心是XWPFDocument.    1.正文段落:一个文档包含多个段落Paragraph,一个段落包含多个Runs,一个R ...

  5. JavaScrip入门笔记(二)

    使用JS完成表格的隔行换色 新标签的学习 <thead> <tr> <th></th> </tr> </thead> <t ...

  6. Eclipse自动代码补全

    Windows——>Preferences——>Java-->Editor-->Content Asist, 在Auto activation triggers for Jav ...

  7. 遍历hashmap

    转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: Map map = new HashM ...

  8. lazyload support for Zepto.js

    关于lazyload,很久之前整理过它的文档:<Lazy Load(1.7.0)中文文档 -- 延迟加载图片的jQuery插件> 因为懒,所以才要用lazyload.但lazyload用了 ...

  9. 铺地砖|状压DP练习

    有一个N*M(N<=5,M<=1000)的棋盘,现在有1*2及2*1的小木块无数个,要盖满整个棋盘,有多少种方式?答案只需要mod1,000,000,007即可. //我也不知道这道题的来 ...

  10. 【Atcoer】ARC088 E - Papple Sort

    [题目]E - Papple Sort [题意]给定长度为n的小写字母串,只能交换相邻字母,求形成回文串的最小步数.n<=2*10^5. [算法]数学 [题解]官方题解 本题题解中有以下重要的思 ...