用LoadRunner下载文件并保存到本地
初看起来,这个问题应该不是问题:LoadRunner录制的是Client(浏览器)和服务器之间的交互,自然也就能记录到下载文件的动作和收到下载文件的全部内容,但如果真用LoadRunner去尝试这样一个工作,却会发现在LoadRunner录制的脚本中根本没有任何与下载文件相关的语句。
其实,在HTTP协议中,本来就没有任何一个方法或是动作能够标识“下载文件”这个动作,对HTTP协议来说,下载文件或是请求页面,都只是一个GET方法,至于说我们下载文件时看到的那个提示我们给出用户名的对话框,那完全是客户端自身判断到我们请求的是一个文件而自行处理的。
那么,究竟该如何才能让LoadRunner完成这个工作呢?
通过上面的分析,我们已经知道了这样一些事实:
1、文件请求是通过GET方法请求的;
2、LoadRunner已经记录了客户端发出的对文件的请求,并能够收到文件内容;
因此,我们完全可以通过关联的方法,从LoadRunner发出的请求的响应中获取到文件的内容,然后通过LoadRunner的文件操作方法,自行生成文件。
从LoadRunner录制时的记录(Recording Log)中,我们可以看到具体的请求和请求的响应信息:
从这里可以看到,我们只需要对以下语句进行关联,就能获得文件的内容。
"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的值。
当然,本脚本只是简单实现了文件下载并保存本地的功能,如果我们希望每次下载保存到本地的文件采用不同的名称,或是希望根据实际文件的后缀名动态生成后缀名,则还需要额外的工作。读者可以自行思考如何实现。^_^
posted on 2006-06-27 11:34 关河 阅读(3757) 评论(4) 编辑 收藏 网摘 所属分类: 软件性能测试
评论
# re: 用LoadRunner下载文件并保存到本地 2006-11-30 17:55 zhuzhenh
我用http://www.cnblogs.com/guanhe/archive/2006/06/27/436746.aspx做了试验,http://sitwithwhom.51.net/up/1151202779.rar应为451K,但用loadrunner下载的文件只有最前面的4k
不知道是什么原因
回复 更多评论
# re: 用LoadRunner下载文件并保存到本地 2006-12-02 17:13 关河
@zhuzhenh
我猜测可能的原因是你的参数长度设置可能有问题。
你试着在程序中增加一些调试的输出,并按照以下步骤试验:
1、在脚本中输出通过web_get_int_property方法获得的文件长度;
2、如果长度没有问题,试着在脚本的开头增加一个语句:
web_set_max_html_param_len("1024000");
还不行的话,直接输出获得参数的值看看。 回复 更多评论
# re: 用LoadRunner下载文件并保存到本地 2006-12-25 22:54 郑娟
我下载了loadrunner软件,但是为什么不可以安装阿 回复 更多评论
# re: 用LoadRunner下载文件并保存到本地 2006-12-26 16:55 关河[匿名]
@郑娟
安装LoadRunner的问题,你可以到testage或是51testing的论坛上看看,会有很多人帮助你的。
不过,建议你写清楚你遇到的问题,简单的一个“不能安装”,谁都解决不了你的问题。 回复 更多评论