Loadrunner之文件的下载(八)
老猪提供:
https://mp.weixin.qq.com/s?__biz=MzIwOTMzNDEwNw==&mid=100000013&idx=1&sn=624f5bc74e2f695a7d35e39bd07740ad&scene=1&srcid=0905ffwvQLmHbpsGR4aZSi3h&key=7b81aac53bd2393dea5ab5759d8e9fccbfa8db7a0b5c2dad75bf53184e20a7763746519affbf3a130920e4a41553dc91&ascene=1&uin=NjMyODQwMzQx&devicetype=Windows-QQBrowser&version=61030004&pass_ticket=ekTbBiq9zGfH0AvEibprSNUK7xuGm3u4is730z95tWEtqvJYlirjzGA%2FioDGDUp8
cc提供:
(1)LoadRunner上传文件
web_submit_data("importStudent.do",
"Action=https://testserver/console/importStudent.do",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/html",
"Referer=https://testserver/console/displayStudentList.do",
"Snapshot=t12.inf",
"Mode=HTTP",
ITEMDATA,
"Name=uploadFile", "Value=D://Excel//data161955.zip", "File=yes", ENDITEM,
LAST);
注:脚本录制使用Http/Html协议或Click and Script协议均可,以上是使用Http/Html录制的的脚本。需要特别注意的是,无论使用哪种协议录制,待上传的文件路径及文件名称只能为英文字符,而不能为中文字符。否则,可能将文件上传的二进制流同时录制到LR的脚本中。
这个问题同时也说明,LR对中文的支持还远不够。
下面是该应用更详细的示例。
Action()
{
//定义double类型的变量trans_time,用来保存事务的执行时间。
double trans_time;
//定义int类型的变量status,用来保存事务执行的返回的值。
int status;
lr_start_transaction("测试");
//使用内置函数lr_get_transaction_duration获取事务的执行时间。
trans_time=lr_get_transaction_duration("测试");
status= web_submit_data("importStudent.do",
"Action=https://testserver/console/importStudent.do",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/html",
"Referer=https://testserver/console/displayStudentList.do",
"Snapshot=t12.inf",
"Mode=HTTP",
ITEMDATA,
"Name=uploadFile", "Value=E://datafile//data01.zip", "File=yes", ENDITEM,
LAST);
//增加手工事务,如果该测试事务执行返回值为0,则事务执行成功,否则执行失败。
if (status == 0)
lr_end_transaction("测试", LR_PASS);
else
lr_end_transaction("测试", LR_FAIL);
//打印事务执行时间。
if (trans_time)
lr_output_message("事务执行时间为:%f 秒",trans_time);
else
lr_output_message("事务执行时间未知!");
return 0;
}
以下是LR的帮助文档中的web_submit_data函数的一个应用示例,从该示例中也可见一斑。
web_submit_data("Attachments",
"Action=http://barton.cottage@.Devonshire.uk/Attachments?YY=45434",
"Method=POST",
"EncType=multipart/form–data",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http:///barton.cottage@.Devonshire.uk/Compose?YY=20435",
"Snapshot=t5.inf",
"Mode=HTML",
ITEMDATA,
"Name=userFile0",
"Value=E://sense_sensibility//Elinor.txt",
"File=yes",
"ContentType=text/html", // Override default "text/plain" for .txt files
ENDITEM,
"Name=userFile1",
"Value=E://sense_sensibility//Marianne.jpg",
"File=yes",
ENDITEM,
LAST);
(2)LoadRunner下载文件
Action()
{
/*下载帮助文档*/
//定义一个整型变量保存获得文件的大小
int flen;
//保存文件句柄
long filedes;
//保存文件路径及文件名
char file[256]="/0";
//定义一个随机数
char * strNumber;
//Returns the string argument after evaluating embedded parameters.
strNumber=lr_eval_string("{RandomNum}");
//将路径保存到file变量中
strcat(file,"D://Excel//");
//将获得的随机数拼接在file变量之后
strcat(file,strNumber);
//将下载的文件后缀名.rar拼接在file变量之后
strcat(file,".rar");
//到此为止一个LoadRunner已经获得了一个完整的文件名
//设置参数的最大长度,注意该值必须大于文件的大小
web_set_max_html_param_len("20000");
//使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容
web_reg_save_param("fcontent",
"LB=",
"RB=",
"SEARCH=BODY",
LAST);
/*下载帮助文件*/
lr_start_transaction("下载帮助文件");
//发送下载帮助文件的请求
web_url("DownLoadServlet",
"URL=https://testserver3/servlet/DownLoadServlet?filename=help",
"Resource=1",
"RecContentType=application/x-msdownload",
"Referer=",
"Snapshot=t41.inf",
LAST);
//获取响应中的文件长度
flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
if(flen > 0)
{
//以写方式打开文件
if((filedes = fopen(file, "wb")) == NULL)
{
lr_output_message("打开文件失败!");
return -1;
}
//写入文件内容
fwrite(lr_eval_string("{fcontent}"), flen, 1, filedes);
//关闭文件
fclose(filedes);
}
lr_end_transaction("下载帮助文件",LR_AUTO);
return 0;
}
Loadrunner目前代码(仍存在的问题:文档下方仍有一段乱码):
*******************************登录代码略过*******************************
————————————————————————————————————————————————————————————————————————
Action()
{
//一、定义参数
int flen=(int) malloc(sizeof(int) * 5000);//1.动态内存分配,定义一个整型变量保存获得文件的大小
long filedes;//2.保存文件句柄
char file[1024];//3.保存文件路径及文件名
//定义download事务
lr_start_transaction("download");
//二、设置的html的文件长度 (文件流)
web_set_max_html_param_len("2048");// 设置的html的文件长度 (文件流)------------------------->不添加此句,打开下载文件会弹错:
//三、获取下载文件内容,此处获取body的全部内容,使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容
web_reg_save_param("fcontent", "LB=</body></html>", "RB=", "SEARCH=BODY", LAST);
//四、发送下载帮助文件的请求
web_submit_data(
"uploaduser.php",
"Action=http://10.10.1.11/pingnan/user/uploaduser.php",
"Method=POST",
"RecContentType=application/download",
"Referer=http://10.10.1.11/pingnan/user/uploaduser.php",
"Snapshot=t5.inf",
"Mode=HTML",
ITEMDATA,
"Name=downloadFlg", "Value=1", ENDITEM,
"Name=sesskey", "Value=MrvpryLZoW", ENDITEM,
"Name=_qf__uploaduser_sub_module", "Value=1", ENDITEM,
"Name=uploadfile", "Value=85518781", ENDITEM,
LAST);
//获取响应中的文件长度
flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
//把返回值转码成本地(避免乱码)
lr_convert_string_encoding(lr_eval_string("{fcontent}"),
LR_ENC_UTF8,
LR_ENC_SYSTEM_LOCALE,
"str");
//4编码转换函数
//将LR中的参数{msg},从utf-8编码转换为system_local编码(LR本地编码),最后保存到LR的参数{afterEncodeMsg}中
//lr_output_message("转码后为:%s",lr_eval_string("{str}"));
//文件随机数命名方法
strcpy(file,lr_eval_string("E:\\Pn-learn\\a\\用户导出文件{num}.csv"));-------------------------->这里我们通过对{num}参数化来实现文件命名的参数化显示,参数设置如下:
if(flen > 0)
{
//以写方式打开文件
if((filedes = fopen(file, "wb")) == NULL)//如果使用的是二进制文件,一定要使用“wb”参数
{
lr_output_message("打开文件失败!");
return -1;
}
//写入文件内容
fwrite(lr_eval_string("{str}"),flen,1, filedes);
//关闭文件
fclose(filedes);
}
lr_end_transaction("download", LR_AUTO);
return 0;
}
——————————————————————————————————————————————————————————
*******************************退出代码略过*******************************
Loadrunner之文件的下载(八)的更多相关文章
- LoadRunner上传及下载文件
(1)LoadRunner上传文件 web_submit_data("importStudent.do", "Action=https://testserver/cons ...
- 【Loadrunner】使用LoadRunner上传及下载文件
使用LoadRunner上传及下载文件 1)LoadRunner上传文件 web_submit_data("importStudent.do", "Action=http ...
- Loadrunner上传文件与下载文件脚本
Loadrunner上传文件与下载文件脚本 一. 上传脚本 Action() { int uploadImgStatus = 0; //获取上传产品图ID web_reg_save_param_ex( ...
- 使用Loadrunner进行文件的上传和下载
最近使用loadrunner中需要录制文件的上传和下载,上传功能模块利用录制可以直接实现,下载无法实现,在网上找到了一段代码,自己动手试验了下,发现没有用 辛苦找到的,还是记录下吧 (1)LoadRu ...
- Jmeter和LR上传文件和下载
Jmeter和LR上传文件和下载 背景: 在某个申请业务中,需要上传附件文件,然后才能提交该申请 遇到的问题: 1, 在使用Jmeter或者LR进行录制时,无法录制到上传文件的请求,只能通过Fidd ...
- Win 7下破解Loadrunner 11(带中文版下载地址)
空间管理您的位置: 51Testing软件测试网 » 测试是一种生活态度 » 日志 与您一起分享在测试过程中的快乐与辛酸... Win 7下破解Loadrunner 11(带中文版下载地址) 上一篇 ...
- Android网络编程之——文件断点下载
一:关于断点下载所涉及到的知识点 1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置 HttpURLConnection connecti ...
- PHP 文件限速下载代码
php 文件限速下载代码 <?php include("DBDA.class.php"); $db = new DBDA(); $bs = $_SERVER["QU ...
- IOS下载查看PDF文件(有下载进度)
IOS(object-c) 下载查看 PDF 其实还是蛮容易操作的.在下载前,首先要把 IOS 可以保存文件的目录给过一遍: IOS 文件保存目录 IOS 可以自定义写入的文件目录,是很有限的,只能是 ...
随机推荐
- awk 中 FS的用法
在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {pr ...
- Java常用集合类(1)
一.HashMap 参考文章: http://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E ...
- UI篇—懒加载
1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 ...
- Openjudge-计算概论(A)-鸡兔同笼
描述一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外).已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物输入第1行是测试数据的组数n,后面跟着n行输入.每组测试数 ...
- java代码块 静态、非静态
Java虚拟机的内存分区:Java栈.堆.方法区.本地方法栈.PC寄存器.还有一个常量池的概念,虚拟机会为每种类型分配一个常量池,而不是实例. 例如有一个类有很多子类,那么在父类定义的final变量, ...
- 29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
//Vehicle类 package d922A; public class Vehicle { private int wheels; private double weight; Vehicle( ...
- iOS中的触摸事件,手势识别,摇晃事件等
在iOS中,事件可以划分为以下几类: 1.触摸事件:通过触摸,手势进行触发(手指点击.缩放等) 2.运动事件:通过加速器触发(例如手机晃动) 3.远程控制事件:通过其他远程设备触发(例如耳机控制按钮) ...
- android 线程池的使用
转自http://www.trinea.cn/android/java-android-thread-pool/ Java(Android)线程池 介绍new Thread的弊端及Java四种线程池的 ...
- AndroidManifest.xml file missing 解决方案
如果在导入一个项目到ECLIPSE里时,不要把项目文件放到workspace里面,放到别处再导,否则可能会提示这个错误:AndroidManifest.xml file missing,顺便导入的方式 ...
- Chapter 2 Open Book——18
"Wow," Mike said. "It's snowing."I looked at the little cotton fluffs that were ...