用LoadRunner下载文件并保存到本地

 论坛上经常有人问起,如何让LoadRunner可以下载文件并保存在本地。

初看起来,这个问题应该不是问题:LoadRunner录制的是Client(浏览器)和服务器之间的交互,自然也就能记录到下载文件的动作和收到下载文件的全部内容,但如果真用LoadRunner去尝试这样一个工作,却会发现在LoadRunner录制的脚本中根本没有任何与下载文件相关的语句。

其实,在HTTP协议中,本来就没有任何一个方法或是动作能够标识“下载文件”这个动作,对HTTP协议来说,下载文件或是请求页面,都只是一个GET方法,至于说我们下载文件时看到的那个提示我们给出用户名的对话框,那完全是客户端自身判断到我们请求的是一个文件而自行处理的。

那么,究竟该如何才能让LoadRunner完成这个工作呢?

通过上面的分析,我们已经知道了这样一些事实:

1、文件请求是通过GET方法请求的;

2、LoadRunner已经记录了客户端发出的对文件的请求,并能够收到文件内容;

因此,我们完全可以通过关联的方法,从LoadRunner发出的请求的响应中获取到文件的内容,然后通过LoadRunner的文件操作方法,自行生成文件。

从LoadRunner录制时的记录(Recording Log)中,我们可以看到具体的请求和请求的响应信息:

从这里可以看到,我们只需要对以下语句进行关联,就能获得文件的内容。

web_url( " viewfile.asp " ,
        
" URL=http://www.testage.net/bbs/viewFile.asp?BoardID=25&ID=217 " ,
        
" Resource=0 " ,
        
" RecContentType=text/html " ,
        
" Referer=http://www.testage.net/bbs/dispbbs.asp?boardID=25&ID=5187&page=1 " ,
        
" Snapshot=t16.inf " ,
        
" Mode=HTML " ,
        EXTRARES,
        
" Url=viewFile.asp?BoardID=25&ID=217 " " Referer=http://www.testage.net/bbs/dispbbs.asp?boardID=25&ID=5187&page=1 " , ENDITEM,
        LAST);

获得文件内容后,通过LoadRunner的fopen,fwrite,fclose函数,就可以将这部分内容保存成本地文件了。

     // 获取响应中的文件长度
    flen  =  web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);

    
if (flen  >   0 )    
    {
        
// 以写方式打开文件
         if ((filedes  =  fopen( " c:\\test.rar " " wb " ))  ==  NULL)
        {
            lr_output_message(
" Open File Failed! " );
            
return   - 1 ;
        }
        
// 写入文件内容
        fwrite(lr_eval_string( " {fcontent} " ), flen,  1 , filedes);
        
// 关闭文件
        fclose(filedes);
    }

点击下载完整的脚本文件

注意,使用该脚本文件时,请自行修改参数username和passwd的值。

当然,本脚本只是简单实现了文件下载并保存本地的功能,如果我们希望每次下载保存到本地的文件采用不同的名称,或是希望根据实际文件的后缀名动态生成后缀名,则还需要额外的工作。读者可以自行思考如何实现。^_^

转载于:https://www.cnblogs.com/guanhe/archive/2006/06/27/436746.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值