项目中需要对“商品信息”进行查询及导出,但是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写入本地。

  1. Export
    {
    char *comparename = "excel/excel2007.do?number=";
  2. char new_exporturl[200] = "http://192.168.1.1/erp/excel/excel2007.do?number=";
  3. char exportname[100];
  4. int flen;
  5. int time;
  6. char file[200] = "D:\\LRTest\\ERP_GoodsManage\\download\\"; //下载文件的保存路径;
  7. long filedes; //保存文件句柄
  8.  
  9. lr_start_transaction("export");
  10.  
  11. flex_amf_call(
  12. "AMF3_call_11",
  13. "Gateway=http://192.168.1.1/erp/messagebroker/amf{CorrelationParameter_1}",
  14. "Snapshot=t133.inf",
  15. "ResponseParameter=response",
  16. //省略该请求详细信息***********
  17. LAST);
  18.  
  19. lr_xml_get_values("XML={response}",
  20. "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功能获取路径,比较重要,还不会自己写。
  21. "ValueParam=exporturl",
  22. LAST);
  23.  
  24. lr_output_message("exporturl = %s", lr_eval_string("{exporturl}"));
  25.  
  26. if( 0 == strncmp(lr_eval_string ("{exporturl}"),comparename,26)) //验证number取值是否正确
  27. {
  28. lr_end_transaction("export", LR_PASS);
  29. }
  30. else
  31. {
  32. lr_end_transaction("export", LR_FAIL);
  33. }
  34.  
  35. strcpy( exportname,lr_eval_string("{exporturl}")+26); //指针偏移26次,也可以使用指针相减计算偏移
  36. lr_output_message("exportname = %s", exportname);
  37.  
  38. strcat( new_exporturl,exportname );
  39. lr_output_message("new_exporturl = %s", new_exporturl);
  40. strcat( new_exporturl,"&abc=0.9799411464482546" ); //不再随机产生
  41. lr_output_message("new_exporturl = %s", new_exporturl);
  42. lr_save_string( new_exporturl,"new_exporturl" );
  43.  
  44. web_set_max_html_param_len("10480");//大小设定为1M
  45.  
  46. web_reg_save_param("filecontent",
  47. "LB=",
  48. "RB=",
  49. "Ord=1",
  50. "Search=BODY",
  51. LAST);
  52.  
  53. lr_start_transaction("download");
  54.  
  55. web_url("excel2007.do",
  56. "URL={new_exporturl}",
  57. "Resource=1",
  58. "RecContentType=application/octet-stream",
  59. "Referer=http://192.168.1.1/erp/erp-flex-ria-1.0.20160909164625.swf",
  60. "Snapshot=t134.inf",
  61. LAST);
  62.  
  63. // lr_output_message("filecontent :", lr_eval_string("{filecontent}"));
  64.  
  65. strcat(file,exportname );
  66. strcat(file,".xlsx" );
         //获取文件下载大小
  67. flen =web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
  68. lr_output_message("下载文件大小是 %d KB", flen / 1024);
  69. lr_user_data_point( "flen",flen ); //添加了自定义数据采集,为了场景中观察而已,与execl下载无关
  70.  
  71. time = web_get_int_property(HTTP_INFO_DOWNLOAD_TIME);
  72. lr_output_message("下载时间是 %d 毫秒", time);
  73. lr_user_data_point( "time",time ); //同上
  74.  
  75. if (flen)
  76. {
  77. if(NULL == (filedes = fopen(file,"wb")))
  78. {
  79. lr_output_message("Open FileFailed:", lr_eval_string("{filecontent}"));
  80. return -1;
  81. }
  82. fwrite( lr_eval_string("{filecontent}"),flen,1,filedes );
  83. fclose( filedes );
  84. lr_end_transaction("download", LR_PASS);
  85. }
  86. else
  87. {
  88. lr_end_transaction("download", LR_FAIL);
  89. }
  90.  
  91. // lr_end_transaction("download", LR_AUTO);
  92.  
  93.   return 0;
    }

  备注:当未定义下载文件的保存路径 file 时,在fopen中使用导出文件的名称exportname作为导出的path参数,即fopen(exportname,"wb"),此时默认的文件导出路径为脚本的工作路径;

loadrunner实现excel文件导出操作的更多相关文章

  1. C# Excel文件导入操作

    Excel文件导出的操作我们经经常使用到,可是讲一个Excel文档导入并显示到界面还是第一次用到. 以下简介下在C#下怎样进行Excel文件的导入操作. 首先加入两个引用 using System.I ...

  2. 我的视频网站开通,第一个 ArcGIS文本文件,excel文件生成点操作发布,希望大家支持

    网站地址:http://i.youku.com/gisoracle第一个学习视屏:ArcGIS文本文件,excel文件生成点操作http://v.youku.com/v_show/id_XNzM3Nz ...

  3. php excel文件导出之phpExcel扩展库

    php Excel  文件导出 phpExcel 官网 http://phpexcel.codeplex.com/ /** * 导出特定文件 * 依据详细情况而定 */ public function ...

  4. Jmeter_实现Excel文件导出到本地

    一般而言,对于页面的“导出”操作,主要经历如下两个操作:①根据数据库的内容,将文件导出到应用服务器上:②将服务器上的文件下载到本地电脑: Jmeter同LoadRunner类似,只能记录服务端与客户端 ...

  5. 使用npoi插件将excel文件导出

    大致流程:前端使用URL地址的方式跳转到action后返回file类型数据 js: window.location.href = '/Home/index?Id=' + id 后台代码: /// &l ...

  6. Python中xlrd和xlwt模块使用方法 (python对excel文件的操作)

    本文主要介绍可操作excel文件的xlrd.xlwt模块.其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装xlrd和xlwt模块 xlrd和xlwt模块不是 ...

  7. JAVA对Excel文件进行操作

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  8. php excel文件导出之二 图像导出

    PHP文件导出 之图像 和 文字同一时候导出 事实上之前写了个php文件导出.跟这个极为相似,由于项目须要对图像进行导出.查询一番.又写了一个, 这个能实现图像的导出(仅仅能是本地图像,不能使用远程图 ...

  9. excel文件导出和导入

    pom.xml添加依赖 @RestController @RequestMapping(value = "/excel") public class ExpImpExcelCont ...

随机推荐

  1. backbone实例01

    backbonejs往简单说,就是一前端MVC框架,适合用于单页面.复杂的前端逻辑. 直接上代码,里面都有相关注释,重点是理解清楚view.collection.model这三者如何关联调用. < ...

  2. 面试题-Stack的最小值o(1)

    // Stack.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using names ...

  3. Swift设置textView的行间距

    let textview = UITextView(frame: CGRect(x: 100, y: 100, width: 100, height: 200)) let paraph = NSMut ...

  4. JQUERY PLUGIN:BARCODE条形码插件

    1)query.barcode.js安装 同其他jquery插件一样,只需要将jquery框架和jquery.barcode.js导入页面即可. <script type="text/ ...

  5. Dashborad 上显示出错

    Dashboard 上显示的错误是因为没有选择对应的X-坐标. 上周处理过 一个字段,它是一个Formula 字段,作为Dashboard的 Data Source 前提是报表是得Group by 一 ...

  6. JS弹出浮层

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. python查找空格和中文

    前言 图片或者文件夹下,命名不规范,有中文或者有空格.这个脚本批处理查找,并输出到 txt中方便修改,也可以扩展为 直接脚本删除空格等.目前只用在Windows上,mac没有测试,不知道能不能行,有需 ...

  8. IOS textField(textview)字数判断

    textfield 有时会需要设置字数限制,如果只是英文或者符号,可以直接在以下代理方法中判断字数 -(BOOL)textField:(UITextField *)textField shouldCh ...

  9. [课程设计]Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计)

    Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统 ...

  10. 关于ř与画面的集成---- k均值聚类

    1.利用R内置数据集iris: 2.通过Rserve 包连接tableau,服务器:localhost,默认端口6311: 3.加载数据集iris: 4.编辑字段:Cluster <span s ...