在跟进项目的过程中,才体会到自己之前闷头看书再写小小的测试程序验证的学习方式很没有效率,知道动态关联,却也只是会参数化式的动态关联,这种关联是我们预先知道要提交的数据而进行的关联;更高一级的可能就是使用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. [转]struct.pack 用法手记

    原文:http://hi.baidu.com/tibelf/item/8b463d15edfdf10bd1d66d83 看到在进行c格式的二进制文件读取的过程中,用到了struct.unpack方法, ...

  2. 使用IO流实现一个简单的小Dome

    (一) 在电脑D盘下创建一个文件为HelloWorld.txt文件,判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去:之后遍历IOTest ...

  3. vue路由的使用

    ue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的页面应用 ...

  4. java性能监控常用命令

    jps -m -l:主要用来输出JVM中运行的进程状态信息 jstack -l pid 来观察锁持有情况 jsatck pid | grep pid(十六进制):输出进程pid的堆栈信息 jmap - ...

  5. Windows7+32位,MongoDB安装

    在网上找了各种安装MongoDB的教程,总是会出现一些bug,就自己总结了,亲测正确,MongoDB的安装再也不是一件麻烦的事情了~ 1.下载好跟自己电脑适合的安装包,选择Custom自定义安装,将安 ...

  6. 【ASM C/C++】 Makefile 规则说明

    make 命令会自动读取当前目录下的 Makefile 文件[31],完成相应的编译步骤.Makefile 由一组规则(Rule)组成,每条规则的格式是:target ... : prerequisi ...

  7. Java的日期工具类

    package com.tech.jin.util; import java.text.DateFormat; import java.text.ParseException; import java ...

  8. sql存储过程比sql语句执行慢很多

    参数嗅探的问题 原因:(1)可能是发生了参数嗅探,第一次赋给存储过程的输入参数,会为该存储过程生成一个基于输入参数的执行计划,因此如果第一次输入的参数不具有代表性(例如大部分查询输入的参数都是A值,但 ...

  9. 手机响应式js轮播基础

    onmousedown --->ontuchstart onmousemove --->ontouchmove onmouseup --->ontouchend ontuchstar ...

  10. google浏览器打开报出文件不可读解决方案

    1.打开*.desktop文件 gedit ~/.local/share/applications/name.desktop 在文件中做改动: The .desktop file should loo ...