在跟进项目的过程中,才体会到自己之前闷头看书再写小小的测试程序验证的学习方式很没有效率,知道动态关联,却也只是会参数化式的动态关联,这种关联是我们预先知道要提交的数据而进行的关联;更高一级的可能就是使用loadrunner自带的自动关联,对jsessionid和DSId进行关联,除此之外一无所知。

  在项目中碰到的情况是:对输入框A进行参数化,假定当前参数数据为a1,参数化之后点击“查询”按钮,Server 返回a1的数据,选中a1进行提交。在这个过程中,根据参数不同Server返回的数据不同,且每次返回的数据项很多,提交过程中又需要这些数据,这个时候就需要考虑将Server返回的动态数据原封不动的添加到“提交”请求中去。

  说明:系统协议:flex+http;

【第一次尝试】:给“查询”操作插入事务,这样就可以清楚的知道哪个请求是“查询”操作(PS:比较小白的方式);确定好查询操作的flex_amf_call请求后,使用Tree视图——打开HTTP View中的Response Body——右边选择“XML-Tree Editor”,结合查询结果页面的展示数据和提交操作提交的数据(提交前插入事务就可以知道是哪一个请求),在XML-Tree Editor中查找对应的字段,并使用web_reg_save_param_xpath()函数将字段提取保存;这种方法相当于在盲人摸象,因为要尽可能完整的查找到需要提交的数据。

//以获取“id”为例   !!!注:该方法放在请求之前
web_reg_save_param_xpath(
"ParamName=id",
"QueryString=/AMFPacket[1]/Messages[1]/Message[1]/AMF3[1]/object-externalizable-custom[1]/flex.messaging.messages.AcknowledgeMessageExt[1]/flex.messaging.io.amf.ASObject[1]/map[1]/flex.messaging.io.ArrayCollection[1]/object-array[1]/flex.messaging.io.amf.ASObject[1]/map[1]/double[1]/text()",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=Yes",
LAST);
flex_amf_call();

  QueryString的值比较重要,但是当前系统Server返回的数据,对于非关键字段,有的有值有的为空,导致map后面的string[i]中i数值不准确;

【第二次尝试】:在QueryString中不再使绝对路径,但依旧需要对提交字段尽可能多的提取。

flex_amf_call(
.......
 "ResponseParameter=response", //******************** 1:添加参数获取服务器返回值
  ......
);
lr_xml_get_values("XML={response}",
"Query=//string[contains(text(),'id')]/following::double", // 2:获取字段对应的值,并保存在name为id的变量中
"ValueParam=id",
LAST);

【第三次尝试】:同样是使用lr_xml_get_values,但是对整段数据提取,之后在submit.c中找到对应的flex_amf_call函数,再确定数据位置,直接塞进去就可以了O(∩_∩)O~~

flex_amf_call(
.......
 "ResponseParameter=response", //******************** 1:添加参数获取服务器返回值
  ......
);
lr_xml_extract("XML={response}",
  "XMLFragmentParam=Result",
  "Query=/AMFPacket[1]/Messages[1]/Message[1]/AMF3[1]/object-externalizable-custom[1]/flex.messaging.messages.AcknowledgeMessageExt[1]/flex.messaging.io.amf.ASObject[1]/map[1]/flex.messaging.io.ArrayCollection[1]/object-array[1]/flex.messaging.io.amf.ASObject[1]", //2:获取整个对象
LAST ); 之后在提交的flex_amf_call中对应位置使用“ {Result} ” 覆盖原数据即可 //3:覆盖原数据

  

  

loadrunner关联——对服务器返回的数据选择性提交的更多相关文章

  1. json 解析double类型多出几位小数,利用NSDecimalNumber修复 , 服务器返回的数据,用数据类型接收(int,NSNumber)?

     后台返回float类型数据8.2,实际用AFN的json解析后得到8.1999999999,该怎么处理呢? 开发中处理处理价格金额问题, 后台经常返回float.double类型, 打印或转成NSS ...

  2. 【04】AJAX接收服务器返回的数据

    AJAX接收服务器返回的数据 readyState 和 status 属性 readyState 属性保存有 XMLHttpRequest 对象的交互状态,从 0 到 4 变化: 0 :未初始化(还没 ...

  3. 服务器返回的数据将Unicode码转成汉字

    当我们请求接口的时候,服务器会返回一些数据,当我们打印的时候就会发现,打印出来的是unicode码,不是汉字. 这时候需要我们自己手动处理一下,让打印的时候输出汉字的格式. 方法如下: 新增一个分类, ...

  4. js如何发送wss协议的请求,以及接受服务器返回的数据

    今天遇到问题,以往都是请求http协议的url,现在请求变成了wss的,用以前那种ajax的方式不可以发送和接受.然后查阅相关资料解决了这个问题,在这记录一下解决办法,使用的是websocket. & ...

  5. datatables 服务器返回数据后的处理-表格数据属性的操作方法(ajax.dataSrc)

    http://dt.thxopen.com/reference/option/ajax.dataSrc.html http://datatables.net/reference/option/ajax ...

  6. Postman----模拟服务器返回数据

    使用场景:在某些情况下,比如A接口还没开发好,我们需要测试B接口,刚好B接口的请求数据中需要包含A接口返回的数据,这时我们就可以模拟A接口服务器返回的数据来测试B接口 解决办法: 举例:模拟此 htt ...

  7. LoadRunner关联之学习笔记

    去银行办业务,进银行的门,大堂经理给你一张业务号,拿着这张业务号,去柜台办理业务.--录制下来 第二天又去银行,还是拿着这张业务号,去柜台办理业务,柜员就不理你了,因为这张业务号是昨天的.--回放过程 ...

  8. 深入了解Struts2返回JSON数据的原理

    首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...

  9. (转)Struts2返回JSON数据的具体应用范例

    转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

随机推荐

  1. 170104、js内置对象与原生对象

    内置对象与原生对象 内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集:而后者包括了一些在运行过程中动态创建的对象. 原生对象 ...

  2. windows programming can't find windows.h

    在用控制台编译c++程序的时候,可能会遇到找不到windows.h的情况.这是因为我们在使用cl命令的时候,并没有配置好环境变量. 所以我们在运行cl命令之前,我们可以运行C:\Program Fil ...

  3. linux和windows下的自动ftp脚本(shell bat)

    一.先来看linux下的: 复制代码 代码如下: #! /bin/bashcd /ftp/CURRENTDATE=` date +%Y%m%d `YESTERDAY=` date -d yesterd ...

  4. [比较老的文章]三维渲染引擎 OGRE 与 OSG 的比较综述

    1 .引言随着计算机可视化.虚拟现实技术的飞速发展,人们对实时真实感渲染以及场景复杂度提出了更高的要求.传统的直接使用底层图形接口如OpenGL.DirectX开发图形应用的模式越来越暴露出开发复杂性 ...

  5. WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常

    WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常 在wpf中封装Com组件时,调用组件 ...

  6. VS2012一打开就停止工作的解决方法

    昨天刚装好VS2012,用得好好的,嘿,今早儿 一打开程序,就告诉我 VS2012停止工作,只有关闭程序或者调试程序. 小主酸菜郁闷不已,必须找到解决方法啊,错误提示如图: 错误原因:        ...

  7. android应用刷新系统多媒体库(增加or删除多媒体文件)

    系统:android4.4及其以上 功能:app中拍照, 并实现浏览.删除照片操作. 实现: 1.拍照,存储到指定路径path 2.通知系统多媒体数据库刷新数据. 主要使用MediaScannerCo ...

  8. AES 与Base64加密

    public class AESHelper     {         /// <summary>         /// 获取密钥         /// </summary&g ...

  9. Linux定时任务Crontab学习笔记

    crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond ...

  10. 用CSS制作伪标签云

    performance testing stress testing conformance testing acceptane testing smoke testing regression te ...