已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include web_api.hAction() int a;/文件大小 long b; /响应数据内容大小 web_url(487989.html, URL=/tester2test/archive/2006/08/28/487989.html, Resource=0, RecContentType=text/html, Referer=, Snapshot=t2.inf, Mode=HTML, EXTRARES, Url=/vqq_inset.js?isMin=0&place=RB&Css=2&RoomName=5rWL6K+V6ICF5a625Zut6K665Z2b&encode=1&isTime=0&width=350&height=240&everypage=0, ENDITEM, Url=/image/chat2.gif, ENDITEM, LAST); web_set_max_html_param_len(10000); /设置最大长度web_reg_save_param(fcontent, LB=, RB=, SEARCH=BODY, LAST); /将响应信息存放到fcontent变量 web_url(下载页面, URL=/Files/tester2test/xncssj.pdf, Resource=0, RecContentType=text/html, Referer=/tester2test/archive/2006/08/28/487989.html, Snapshot=t3.inf, Mode=HTML, LAST);a = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); /获取下载文件的大小 if(a 0) if(b = fopen(c:/性能测试实践及其展望.pdf, wb) = NULL) /以写方式打开文件 lr_output_message(文件操作失败!); return -1; fwrite(lr_eval_string(fcontent), a, 1, b); /写入文件内容 fclose(b); /关闭文件 return 0;思路如下:1.设置接收大小,单位是character2.保存要接收的内容到参数,后面文件存储的内容来源于这个参数信息3.获取要下载文件的大小4.使用fopen(*filename,mode)open a file for buffer I/O,注意,返回值是long类型,请参考帮助文档5.写文件6.关闭文件流。源代码如下:Action()int iflen;long lfbody;web_set_max_html_param_len(10000);web_reg_save_param(Downexe,LB=,RB=,LAST);web_url(downloadprocess,URL=/download/07.pdf,Resource=1,RecContentType=application/pdfl,Referer=,LAST);iflen=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);lr_output_message(%d,iflen);if(iflen0)if(lfbody=fopen(c:fetion.pdf,wb)=NULL)lr_output_message(Error when write file);return -1;fwrite(lr_eval_string(Downexe),iflen,1,lfbody);lr_output_message(write successful);fclose(lfbody);return 0;LR是无法记录文件如何保存到本地的,我们把这个请求写在了一个单独的action中,所以只要把服务器响应的所有内容均获取下来写到本地就完成了下载文件的保存。web_url(download.php,URL=41/cn/resources/download.php?id=386,Resource=1,RecContentType=application/force-download,Referer=,LAST);Action()int flen; /保存文件的大小long fileds; /保存文件的句柄char FilePath256=0; /保存文件路径及名称web_set_max_html_param_len(10000); /设置页面接受的最大字节数,应大于下载文件的大小web_concurrent_start(NULL);/关联文件内容web_reg_save_param(FileContent,LB=,RB=,Search=BODY,LAST);/关联文件名。有些文件名是常量,所以无需关联web_reg_save_param(fileName,LB=filename=,RB=,Search=all,LAST);/原内容,发出请求web_url(download.php,URL=41/cn/resources/download.php?id=386,Resource=1,RecContentType=application/force-download,Referer=,LAST);web_concurrent_start(NULL);/将路径追加给指针变量strcat(FilePath,c:);/将文件名追加给指针变量。转换为字符串。strcat(FilePath,lr_eval_string(FileName); /获得文件大小flen=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);if(flen 0) if(fileds = fopen(FilePath,wb) = NULL) lr_output_message(Open File Failed); return -1; fwrite(lr_eval_string(FileContent),flen,1,fileds);return 0;如需重复保存文件到本地char FilePath256=0;char *chNumber;chNumber=lr_eval_string(Random); /生成随机数strcat(FilePath,c:);strcat(FilePath,chNumber);strcat(FilePath,.rar);一、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(testNewParam);/获取一个随机数并转化成字符串 ,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=/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 .MalformedURLException;import .URL;import .URLConnection;import lrapi.lr;public class Actions public int init() throws Throwablereturn 0;/end of initpublic int action() throws Throwableint DownLoadSize = 0;String path = c:temp; /设置下载文件保存路径String vuid = String.valueOf(lr.get_vuser_id(); /获取当前虚拟用户ID并转换成字符串DownLoadSize = UrlTools.getHttpFileByUrl(/download/file.php?id=129973&sid=78fc8d76767ef49b606595824ceb963d,vuid,path); /调用UrlTools.getHttpFileByUrl()return 0;/end of actionpublic int end() throws Throwablereturn 0;/end of end class UrlToolspublic static int getHttpFileByUrl(String address,String userid,String path)/定义下面需要用到的变量URL url;URLConnection conn = null;int BUFF_SIZE = 1024;byte buf = new byteBUFF_SIZE;int DownLoadSize = 0;BufferedInputStream bis;FileOutputStream fos = null;int size = 0;tryurl = 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;Action()int flen; /定义一个整型变量保存获得文件的大小long filedes; /保存文件句柄char file256=0; /保存文件路径及文件名char * chNumber ;int time;web_set_max_html_param_len(1024000); /设置页面接收最大的字节数,该设置应大于下载文件的大小/ lr_rendezvous(下载);web_concurrent_start(NULL);/并发开始web_reg_save_param(filecontent,LB=,RB=,Search=BO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园教师幼儿体育活动指导方案
- 干法熄焦工安全文化评优考核试卷含答案
- 淡水鱼类养殖工岗前QC管理考核试卷含答案
- 铁合金焙烧操作工变更管理评优考核试卷含答案
- 金属摆件制作工创新方法知识考核试卷含答案
- 余压利用工岗前变革管理考核试卷含答案
- 预拌混凝土中控工岗前变更管理考核试卷含答案
- 己二胺装置操作工创新应用评优考核试卷含答案
- 道路货运站务员常识水平考核试卷含答案
- 外贸面试技巧与实战模拟
- 大学生面试礼仪和技巧课件
- EPC项目-装饰装修EPC总承包工程-技术标(实施方案、实施技术方案、实施管理组织方案)
- 业务连续性管理实务
- GB/T 5680-2023奥氏体锰钢铸件
- 数控车床基本操作按钮
- EIM Starter Unit 8 Dont do that单元知识要点
- 美丽乡村建设项目重点难点施工区技术措施
- 05.辩论的基础知识
- 第六单元 中华民族的抗日战争 复习课件 部编版八年级历史上册
- 《细胞工程学》考试复习题库(带答案)
- 师说一等奖优秀课件师说优质课一等奖
评论
0/150
提交评论