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

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

1LoadRunner上传文件

 

         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);

 

 

2LoadRunner下载文件

 

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;
}
——————————————————————————————————————————————————————————

*******************************退出代码略过*******************************

转载于:https://www.cnblogs.com/zhuzhubaoya/p/5843089.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值