老猪提供:

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提供:

http://blog.csdn.net/shwonder/archive/2010/08/11/5802885.aspx

(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_convert_string_encoding(lr_eval_string("{msg}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"afterEncodeMsg");
//将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之文件的下载(八)的更多相关文章

  1. LoadRunner上传及下载文件

    (1)LoadRunner上传文件 web_submit_data("importStudent.do", "Action=https://testserver/cons ...

  2. 【Loadrunner】使用LoadRunner上传及下载文件

    使用LoadRunner上传及下载文件 1)LoadRunner上传文件 web_submit_data("importStudent.do", "Action=http ...

  3. Loadrunner上传文件与下载文件脚本

    Loadrunner上传文件与下载文件脚本 一. 上传脚本 Action() { int uploadImgStatus = 0; //获取上传产品图ID web_reg_save_param_ex( ...

  4. 使用Loadrunner进行文件的上传和下载

    最近使用loadrunner中需要录制文件的上传和下载,上传功能模块利用录制可以直接实现,下载无法实现,在网上找到了一段代码,自己动手试验了下,发现没有用 辛苦找到的,还是记录下吧 (1)LoadRu ...

  5. Jmeter和LR上传文件和下载

    Jmeter和LR上传文件和下载 背景: 在某个申请业务中,需要上传附件文件,然后才能提交该申请 遇到的问题: 1,  在使用Jmeter或者LR进行录制时,无法录制到上传文件的请求,只能通过Fidd ...

  6. Win 7下破解Loadrunner 11(带中文版下载地址)

    空间管理您的位置: 51Testing软件测试网 » 测试是一种生活态度 » 日志 与您一起分享在测试过程中的快乐与辛酸... Win 7下破解Loadrunner 11(带中文版下载地址) 上一篇  ...

  7. Android网络编程之——文件断点下载

    一:关于断点下载所涉及到的知识点 1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置 HttpURLConnection connecti ...

  8. PHP 文件限速下载代码

    php 文件限速下载代码 <?php include("DBDA.class.php"); $db = new DBDA(); $bs = $_SERVER["QU ...

  9. IOS下载查看PDF文件(有下载进度)

    IOS(object-c) 下载查看 PDF 其实还是蛮容易操作的.在下载前,首先要把 IOS 可以保存文件的目录给过一遍: IOS 文件保存目录 IOS 可以自定义写入的文件目录,是很有限的,只能是 ...

随机推荐

  1. Struts对输入数据的校验

    当我们在登录或者是注册时需要对用户输入的数据验证,以前都是浏览器传送数据到后台,后台对数据进行校验,如果有错误就带着错误信息转发带登录或者注册页面, struts可以简便的对输入数据进行校验 首先我们 ...

  2. tcpdump的源码分析

    在源文件 tcpdump.c 中: 结构体数组“static struct printer printers[]”定义了tcpdump所跟参数及其对一个的处理函数. struct printer {  ...

  3. CDOJ 1270 Playfair(模拟)

    题目链接 Playfair is a kind of substitution cipher.And the encryption role is simple.In general,there ar ...

  4. NHibernate初步使用

    1.创建一个网站项目:QuickStart 2.引用程序集:NHibernate.dll 3.更改配置文件加入以下节点: <configSections> <section name ...

  5. Java 算法

    1.简单的冒泡排序 //冒泡算法一共两种 // -----冒泡算法(1) int a[]={23,69,4,58,1,20}; for (int i = 0; i < a.length-1; i ...

  6. 洛谷-A+B Problem-洛谷的第一个任务

    题目描述 Description 输入两个整数a,b,输出它们的和(a,b<=10^9)  输入输出格式 Input/output 输入格式:两个整数以空格分开输出格式:一个数  输入输出样例  ...

  7. C# 验证码生成(MVC和非MVC两种方式)

    /// <summary> /// 生成验证码 /// </summary> /// <param name="length">指定验证码的长度 ...

  8. 【Linux】给Linux配置SNMP用户以及协议

    1 检查是否已经安装snmp的rpm包Ideploy:~ # rpm -aq | grep snmp libsnmp15-5.4.2.1-8.12.10.1 snmp-mibs-5.4.2.1-8.1 ...

  9. append()常见错误

    实例1 empty = [] print empty.append("Hi") 输出None print empty 输出["Hi"] 错误: 直接打印变量带a ...

  10. Python字符串连接方式

    python中有很多字符串连接方式,总结一下: 1 最原始的字符串连接方式:str1 + str22 python 新字符串连接语法:str1, str23 奇怪的字符串方式:str1 str24 % ...