loadrunner 脚本开发-文件下载
脚本开发-文件下载
by:授客 QQ:1033553122
下载简介
对 HTTP协议来说,无论是下载文件或者请求页面,对客户端来说,都只是发出一个GET请求,并不会记录点击后的“保存”、“另存为操作”。
如下,点击页面中tar.gz压缩包,用工具可以清楚的看到,客户端仅是发起了一个GET请求,请求获取点击的资源。接着服务器返回包含请求资源响应消息


LoadRunner记录了客户端发出的对文件的请求,并能够收到服务器返回的内容。因此,我们要做的额外工作就是“保存”、“另存为”---可以通过关联的方法获取服务器返回的内容,并写入文件保存即可。
注意:这里的要保存的内容为http的消息主体,也就是上述两箭头垂直相交形成区域的内容。
具体实例
如下,访问图示页面,并下载红色方框框选的压缩包


脚本主要由以下四个action组成,其中vuser_init,vuser_end的内容为默认值,未存放录制内容:
vuser_init
download_page
download_file
vuser_end
download_page,download_file的具体代码如下
//
访问下载页面
download_page()
{
web_url("dist",
"URL=http://tsung.erlang-projects.org/dist/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t11.inf",
"Mode=HTML",
LAST);
return 0;
}
//录制下载操作
download_file()
{
int
file_size;
//
文件大小
//fwrite缓冲区大小
long
file_handle = NULL;
//
文件句柄
//
如果要保存的数据超过1024个字节,使用以下函数设置参数大小,保证参数可容纳要保存文件的大小
web_set_max_html_param_len("10000");
//将响应信息存放到
file_content参数
web_reg_save_param("file_content", "LB=", "RB=", "SEARCH=BODY", LAST);
web_link("idx-tsunami-0.1.1.tar.gz",
"Text=idx-tsunami-0.1.1.tar.gz",
"Snapshot=t12.inf",
LAST);
//获取响应文件大小
file_size =
web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
if(file_size > 0)
{
//以“二进制+写”的方式打开文件(如下,在d盘根目录下新建idx-tsunami-0.1.1.tar.gz文件
if((file_handle = fopen("d:\\idx-tsunami-0.1.1.tar.gz", "wb")) ==
NULL)
{
lr_output_message("文件操作失败!");
return -1;
}
//写入文件内容
fwrite(lr_eval_string("{file_content}"), file_size, 1,
file_handle);
//关闭文件
fclose(file_handle);
}
return 0;
}
注意:
1.如下,从BODY,即消息主体中查找,不指定左右边界,即查找所有消息主体的内容
web_reg_save_param("file_content", "LB=", "RB=", "SEARCH=BODY", LAST);
2.上述的web_link手工改成如下的web_url也是可以的。
web_url("下载idx-tsunami-0.1.1.tar.gz",
"URL=http://tsung.erlang-projects.org/dist/idx-tsunami-0.1.1.tar.gz",
"Resource=0",
"RecContentType=application/x-gzip",
"Referer=http://tsung.erlang-projects.org/dist/",
"Snapshot=t12.inf",
"Mode=HTML",
LAST);
解说:
1.
"URL=http://tsung.erlang-projects.org/dist/idx-tsunami-0.1.1.tar.gz",
此处的URL为指定资源下载地址,通常通过右键资源连接-->属性,可看到,如下图


2."Referer=http://tsung.erlang-projects.org/dist/",
这里的Referer指下载资源所引用的页面,Referer是HTTP
header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。


loadrunner 脚本开发-文件下载的更多相关文章
- loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
转自:http://blog.sina.com.cn/s/blog_13cc013b50102v49c.html(查看原文) 在VuGen中默认使用{}的字符串称为参数 注意:参数必须在双引号中才能用 ...
- Loadrunner脚本开发规范
Loadrunner脚本开发规范 目录 1.一般约定... 3 2.代码注释约定... 4 3.格式化代码... 5 1.一般约定 1.1具体脚本规则,必须在具体代码中加注释,以便脚本开发人员阅读和理 ...
- Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试 by:授客 QQ:1033553122 目的 实现基于http协议的流媒体在线视频播放,服务器性能测试脚本,模拟用户浏览器方式在线播放 ...
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
- Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
脚本开发-利用Loadrunner生成Web service测试脚本 1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“ ...
- loadrunner 脚本开发-执行操作系统命令
脚本开发-执行操作系统命令 by:授客 QQ:1033553122 思路: 用loadrunner system()函数 函数原型: int system( const char *string ); ...
- loadrunner 脚本开发-基本知识
脚本开发-基本知识 1)编码工具设置 自动补全输入Tools->General Options->Environment->Auto complete word 显示功能语法Tool ...
- Loadrunner 脚本开发-利用web_submit_data函数实现POST请求
脚本开发-利用web_submit_data函数实现POST请求 by:授客 QQ:1033553122 概述 web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的 ...
- Loadrunner 脚本开发-从文件读取数据并参数化
脚本开发-从文件读取数据并参数化 by:授客 QQ:1033553122 直接上代码: char* testfn() { int count, total = 0; //char buffer[1 ...
随机推荐
- 微信小程序如何调用API实现数据请求-wx.request()
前言 微信小程序不存在ajax,那么它是如何实现数据请求功能的呢?在微信中提供了API的调用wx.request(OBJECT),这个是很不错的.下面就讲一下如何请求数据,简单到不行. wx.requ ...
- react小知识2
概述 这是我学习react的过程中,学到的一些简便写法,都是利用了es6的特性,记录下来供以后开发时参考,相信对其他人也有用. 参考资料:dva.js 知识导图 析构 我们也可以析构传入的函数参数. ...
- Linux 后台运行命令:nohup 和 &
[参开文章]:nohup 与 & 的区别 1. nohup 1.1 基本概念 将程序以忽略挂起信号的方式运行起来: 不可以免疫 Ctrl + C 的 SIGINT 中断信号: 可以免疫 SI ...
- Linux下安装配置与使用MySQL数据库
Linux下安装配置与使用MySQL数据库 在Linux下安装做开发时往往少不了要使用到MySQL数据库,下面就Linux系统为例讲解一下,如何安装MySQL数据库,如何启用/停.止MySQL服务,如 ...
- javaScript 节流与防抖
首先 我们要知道 节流与防抖可以干什么. 优化网络请求性能——节流 优化页面请求性能——防抖 举两个简单的小例子: 节流: 例如 有些购物页面,会有一些让你抢购的活动,到点的时候,需要你快速的点某个按 ...
- PyTorch(二)Intermediate
Convolutional Neural Network import torch import torch.nn as nn import torchvision import torchvisio ...
- web自动化测试---css方式定位页面元素
css方式定位的方法也有很多,相较于xpath更灵活一点,下面就介绍下使用方法(以百度输入框为例) 1.通过tag来定位,可以写成如下: driver.find_element_by_css_sele ...
- 【DB2】Event monitor for locking
Customer said, they got the following Errors in applications logs Caused by: financing.tools.hub.sha ...
- 使用 Notification API 开启浏览器桌面提醒
Notifications API 允许网页控制向最终用户显示系统通知 —这些都在顶级浏览上下文视口之外,因此即使用户已经切换标签页或移动到不同的应用程序,也可以显示.该API被设计成与不同平台上的现 ...
- Linux排序不准确的问题,用以下两行代码解决
export LC_ALL=C ...