loadrunner实现excel文件导出操作
项目中需要对“商品信息”进行查询及导出,但是loadrunner并不能录制到“保存”这一操作。
项目介绍:flex+Http协议;
不能录制的原因:
在我们点击了“导出”按钮后,服务端已经生成一份我们需要的文件,之后的“另存为”也是一个下载功能,但是保存到本地的操作是本地读写操作,由于loadrunner是基于协议的,所以录制不到该操作。
处理步骤:
(1)根据录制到的web_url()请求,对其中的URL进行参数化;
(2)根据flex_amf_call获取服务端返回的数据;
(3)C的一系列文件操作进行本地写操作;
实例:
本次录制到的下载路径(在web_url函数中)为:http://192.168.1.1/erp/excel/excel2007.do?number=******&abc=******;在导出操作对应的flex_amf_call函数的XMLTreeEditor中获取到的下载请求为:excel/excel2007.do?number=16091410574050259539,如下所示。

看到这里,我意识到自己需要利用C的字符串处理函数,将Response的数据string提取处理,这里使用 lr_xml_get_values函数完成。
同时也注意到,最终的URL带有“abc=******”的字样,考虑到是不是和查询到的商品有关,于是在商品查询相关flex的返回中寻找答案,结果找了半天都无结果,最后询问开发,才知道这只是一个随机数(⊙﹏⊙)b,为了防止从缓存中读取数据使导出的数据不正确,也是醉了,看来沟通还是非常重要的。。。
明白了URL的处理,接下来就是获取到需要下载的excel文件,在web_url请求前添加 web_reg_save_param获取下载的内容,可以使用log输出观察是否正确。
最后使用 fwrite写入本地。
Export
{
char *comparename = "excel/excel2007.do?number=";
char new_exporturl[200] = "http://192.168.1.1/erp/excel/excel2007.do?number=";
char exportname[100];
int flen;
int time;
char file[200] = "D:\\LRTest\\ERP_GoodsManage\\download\\"; //下载文件的保存路径;
long filedes; //保存文件句柄 lr_start_transaction("export"); flex_amf_call(
"AMF3_call_11",
"Gateway=http://192.168.1.1/erp/messagebroker/amf{CorrelationParameter_1}",
"Snapshot=t133.inf",
"ResponseParameter=response",
//省略该请求详细信息***********
LAST); lr_xml_get_values("XML={response}",
"Query=/AMFPacket[1]/Messages[1]/Message[1]/AMF3[1]/object-externalizable-custom[1]/flex.messaging.messages.AcknowledgeMessageExt[1]/string[1]/text()", //使用loadrunner——》XMlTreeEditor中的Get_Path功能获取路径,比较重要,还不会自己写。
"ValueParam=exporturl",
LAST); lr_output_message("exporturl = %s", lr_eval_string("{exporturl}")); if( 0 == strncmp(lr_eval_string ("{exporturl}"),comparename,26)) //验证number取值是否正确
{
lr_end_transaction("export", LR_PASS);
}
else
{
lr_end_transaction("export", LR_FAIL);
} strcpy( exportname,lr_eval_string("{exporturl}")+26); //指针偏移26次,也可以使用指针相减计算偏移
lr_output_message("exportname = %s", exportname); strcat( new_exporturl,exportname );
lr_output_message("new_exporturl = %s", new_exporturl);
strcat( new_exporturl,"&abc=0.9799411464482546" ); //不再随机产生
lr_output_message("new_exporturl = %s", new_exporturl);
lr_save_string( new_exporturl,"new_exporturl" ); web_set_max_html_param_len("10480");//大小设定为1M web_reg_save_param("filecontent",
"LB=",
"RB=",
"Ord=1",
"Search=BODY",
LAST); lr_start_transaction("download"); web_url("excel2007.do",
"URL={new_exporturl}",
"Resource=1",
"RecContentType=application/octet-stream",
"Referer=http://192.168.1.1/erp/erp-flex-ria-1.0.20160909164625.swf",
"Snapshot=t134.inf",
LAST); // lr_output_message("filecontent :", lr_eval_string("{filecontent}")); strcat(file,exportname );
strcat(file,".xlsx" );
//获取文件下载大小
flen =web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
lr_output_message("下载文件大小是 %d KB", flen / 1024);
lr_user_data_point( "flen",flen ); //添加了自定义数据采集,为了场景中观察而已,与execl下载无关 time = web_get_int_property(HTTP_INFO_DOWNLOAD_TIME);
lr_output_message("下载时间是 %d 毫秒", time);
lr_user_data_point( "time",time ); //同上 if (flen)
{
if(NULL == (filedes = fopen(file,"wb")))
{
lr_output_message("Open FileFailed:", lr_eval_string("{filecontent}"));
return -1;
}
fwrite( lr_eval_string("{filecontent}"),flen,1,filedes );
fclose( filedes );
lr_end_transaction("download", LR_PASS);
}
else
{
lr_end_transaction("download", LR_FAIL);
} // lr_end_transaction("download", LR_AUTO); return 0;
}
备注:当未定义下载文件的保存路径 file 时,在fopen中使用导出文件的名称exportname作为导出的path参数,即fopen(exportname,"wb"),此时默认的文件导出路径为脚本的工作路径;
loadrunner实现excel文件导出操作的更多相关文章
- C# Excel文件导入操作
Excel文件导出的操作我们经经常使用到,可是讲一个Excel文档导入并显示到界面还是第一次用到. 以下简介下在C#下怎样进行Excel文件的导入操作. 首先加入两个引用 using System.I ...
- 我的视频网站开通,第一个 ArcGIS文本文件,excel文件生成点操作发布,希望大家支持
网站地址:http://i.youku.com/gisoracle第一个学习视屏:ArcGIS文本文件,excel文件生成点操作http://v.youku.com/v_show/id_XNzM3Nz ...
- php excel文件导出之phpExcel扩展库
php Excel 文件导出 phpExcel 官网 http://phpexcel.codeplex.com/ /** * 导出特定文件 * 依据详细情况而定 */ public function ...
- Jmeter_实现Excel文件导出到本地
一般而言,对于页面的“导出”操作,主要经历如下两个操作:①根据数据库的内容,将文件导出到应用服务器上:②将服务器上的文件下载到本地电脑: Jmeter同LoadRunner类似,只能记录服务端与客户端 ...
- 使用npoi插件将excel文件导出
大致流程:前端使用URL地址的方式跳转到action后返回file类型数据 js: window.location.href = '/Home/index?Id=' + id 后台代码: /// &l ...
- Python中xlrd和xlwt模块使用方法 (python对excel文件的操作)
本文主要介绍可操作excel文件的xlrd.xlwt模块.其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装xlrd和xlwt模块 xlrd和xlwt模块不是 ...
- JAVA对Excel文件进行操作
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...
- php excel文件导出之二 图像导出
PHP文件导出 之图像 和 文字同一时候导出 事实上之前写了个php文件导出.跟这个极为相似,由于项目须要对图像进行导出.查询一番.又写了一个, 这个能实现图像的导出(仅仅能是本地图像,不能使用远程图 ...
- excel文件导出和导入
pom.xml添加依赖 @RestController @RequestMapping(value = "/excel") public class ExpImpExcelCont ...
随机推荐
- Unable to make the session state request to the session state server处理
Server Error in '/' Application. Unable to make the session state request to the session state serve ...
- [已解决][HTML5]基于WebSocket开发小蝌蚪应用
前端时间在网上看到别人用WebSocket开发的小蝌蚪应用很炫酷,不过是php,于是想着用java也实现一套, 找到前端 https://github.com/danielmahal/Rumpetro ...
- C语言中关于POW在不同状态下四舍五入的解决方法
这是今天作业中的一个代码: #include <stdio.h>#include<math.h>int main(){ printf("请输入一个整数:") ...
- django之DB操作
先来区分一下什么是一对一.多对多 一对一:子表从母表中选出一条数据一一对应,母表中选出来一条就少一条,子表不可以再选择母表中已被选择的那条数据: 一对多:子表从母表中选出一条数据一一对应,但母表的这条 ...
- phpstrom正则替换
- 关于APP程序员泡沫经济
这些年,移动互联网非常火,火到掀起学习iOS.安卓以及H5的热潮.有人将这些新技术作为自己的实力补充,增加竞争力:更多的人将它们作为主业,专职做移动开发.但是,即便有移动开发人员不断涌入,对整个行业来 ...
- 【leetcode❤python】 165. Compare Version Numbers
#-*- coding: UTF-8 -*-class Solution(object): def compareVersion(self, version1, version2): ...
- kali/centos 更新 java
kali 转自:http://blog.sina.com.cn/s/blog_5736d8870102w15u.html 墙内的论坛上和博客上有很多这样的文章了,不过一般过程都很复杂,让人看的头晕眼花 ...
- .NET4.5 WFP中用WebBrowser获取/操作网页html代码
引言 想给自己之前写的网页小说爬虫程序更新换代,之前一直是用winform的形式写的程序,因此这一次更新打算把UI换成WPF(因为听说WPF很漂亮),顺便也以此引入WPF的学习. 那么作为网页爬虫程序 ...
- 一个简单的JAVA C/S多线程应用
import java.net.*;import java.io.*;public class simpleServer{private static ServerSocket serverSoc ...