LoadRunner上传及下载文件

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

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Linux内存管理之mmap详解

作者:freeboy1015 来源:http://lib.csdn.net/article/linux/62126 一. mmap系统调用 1. mmap系统调...

82780
来自专栏码农阿宇

asp.net core轻松入门之MVC中Options读取配置文件

接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利...

26940
来自专栏人工智能LeadAI

mongoDB的安装及基本使用

mongoDB简介 1、NoSQL数据库 数据库:进行高效的、有规则的进行数据持久化存储的软件 NoSQL数据库:Not only sql,指代非关系型数据库...

31080
来自专栏salesforce零基础学习

salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)

Ajax Toolkit 参考文档:https://resources.docs.salesforce.com/212/latest/en-us/sfdc/pd...

31160
来自专栏小狼的世界

Python3.6学习笔记(四)

程序运行中,可能会遇到BUG、用户输入异常数据以及其它环境的异常,这些都需要程序猿进行处理。Python提供了一套内置的异常处理机制,供程序猿使用,同时PDB提...

17940
来自专栏orientlu

初试 Protocol Buffer

如下, 一般情况下,进行消息发送的时候,对于 c/c++, 双方统一使用相同的结构体,发送时直接按内存块丢出去,接收后内存块直接赋值给结构体即可。但是这种对于其...

14430
来自专栏JavaEE

Java面试题 - 03前言:三、框架篇:

1. JDBC编程有什么不足?mybatis是如何解决的? 答:主要有以下几个方面:

10710
来自专栏linux驱动个人学习

VFS四大对象之二 struct inode

继上一篇文章:https://cloud.tencent.com/developer/article/1053842 二、inode结构体:(转自http://...

60970
来自专栏熊训德的专栏

Hbase compaction 源码分析一:compaction 概况分析

本文档从框架的源码角度梳理了,hbase 在什么情况下会触发compaction,并通过官方文档说明出发minor 和major compaction的时间点。

53910
来自专栏python3

习题16:读写文件

小技巧就是可以让你的脚本一部分一部分地运行起来,也方便排查错误,以此类推,直到整个脚本运行起来为止

8910

扫码关注云+社区

领取腾讯云代金券