转:LoadRunner中web_custom_request 和 web_submit_data的差别

web_custom_request方法可以发送POST和GET类型的请求

web_submit_data只能发送POST类型的请求

所有web_submit_data方法发送的请求都可以使用web_custom_request来实现

web_custom_request可以实现web_submit_data无法实现的请求,

比如“查询所有邮件并删除”这个案例中,查询时我们使用关联把所有邮件对应的标识抓取成一个数组,如果使用web_submit_data来完成这 个删除的请求,需要很多个web_submit_data请求才能完成,但使用web_custom_request就可以通过一个请求完成,方法是自己 写代码拼一个web_custom_request 方法POST请求的Body值。

web_submit_data请求中提交的数据是以这样的方式存在的

Name=属性名称,,Value=属性值” 

如:

“Name=locale”, “Value=L2″, ENDITEM, 
     “Name=dataCenter”, “Value=yh”, ENDITEM, 
     “Name=username”, “Value=12044″, ENDITEM,

如果我们想提交的某个属性包含包含多个值(上文的例子中就是这样的情况),它就无法处理了,只能通过多个web_submit_data来处理。

下面是一个典型的web_submit_data和web_custom_request请求,可以看到web_custom_request中提交的数据(body)是以这样的方式存在的

Body=属性名称=属性值&属性名称=属性值&……

web_submit_data(“login”, 
        “Action=http://192.168.14.21:78……ndex_sso.jsp”, 
        “Method=POST”, 
        “RecContentType=text/html”, 
        “Referer=http://192.168.14.21:7888…%3D%2Findex_sso.jsp”, 
        “Mode=HTML”, 
        ITEMDATA, 
        “Name=locale”, “Value=L2″, ENDITEM, 
        “Name=dataCenter”, “Value=yh”, ENDITEM, 
        “Name=username”, “Value=12044″, ENDITEM, 
        “Name=password”, “Value=”, ENDITEM, 
        “Name=_eventId”, “Value=submit”, ENDITEM, 
        “Name=isPureWeb”, “Value=true”, ENDITEM, 
        “Name=solutionName”, “Value=eas”, ENDITEM, 
        “Name=dbType”, “Value=1″, ENDITEM, 
        “Name=easSessionId”, “Value=eas;yh;L2;12044;BaseDB”, ENDITEM,        
        “Name=userAuthPattern”, “Value=BaseDB”, ENDITEM, 
        “Name=loginFlow”, “Value=true”, ENDITEM, 
        LAST);

web_custom_request(“CommonQueryDialog.jsf_3″,
        “URL=http://192.168.14.21:7888/ea…ueryDialog.jsf”,
        “Method=POST”,
        “Resource=0″,
        “RecContentType=text/javascript”,
        “Referer=http://192.168.14.21:7888/…DailyLoanUERc%2Bihtml”,
        “Mode=HTML”,
        “EncType=application/x-www-form-urlencoded;charset=UTF-8″,
        “Body=queryDialog%3AselectSolutionList=%E6%9F%A5%E8%AF%A2&queryDialog%3Aj_iduserFilterPanel_3_value=Kd5QoAEPEADgAAf8wKgEDMznrtQ%3D&=%E6%B9%96%E5%8D%97%E4%BA%9A%E5%8D%8E%E4%B9%B3%E4%B8%9A%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&queryDialog%3Aj_iduserFilterPanel_6=&queryDialog%3Aj_iduserFilterPanel_9_value=3&=%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E&queryDialog%3Aj_iduserFilterPanel_11=0&queryDialog%3Aj_iduserFilterPanel_14_value=&=&queryDialog%3Aj_iduserFilterPanel_17_value=&=&queryDialog%3Aj_iduserFilterPanel_20_value=&=&queryDialog%3Aj_iduserFilterPanel_23_value=&=&queryDialog%3Aj_iduserFilterPanel_26_value=&=&queryDialog%3Aj_iduserFilterPanel_29_value=&=&queryDialog%3Aj_iduserFilterPanel_32=&queryDialog%3Aj_iduserFilterPanel_35_value=&=&queryDialog%3Aj_iduserFilterPanel_38=2008-08-01&queryDialog%3Aj_iduserFilterPanel_41=2008-08-28&queryDialog%3AfilterGrid_modifiedData=%5B%5D&queryDialog%3AfilterGrid_removedData=%5B%5D&queryDialog%3A_postback=&queryDialog%3AuserFilterPanel=%2Fcp%2Fbc%2FdailyLoanBillCommQuery.xhtml&javax.faces.ViewState={vs2}”,
        LAST);

通过我的观察,发现有两种情况下的POST请求会被LoadRunner录制为web_custom_request,

1.        上文提到的批量提交多条同属性名称的数据的请求
2.        header属性x-requested-by值为XMLHttpRequest的POST请求

这两种实现请求的方法还有一个需要注意的地方就是web_custom_request中body中的属性值如果包含一些特殊字符,必须通过URL编码,否则Web服务器会返回500错误,一个典型的例子是如果Body中包含ViewState,ViewState中常常有“=”之类的特殊字符,此时必须通过URL编码,LoadRuner中提供了一个这样的编码转换函数

web_convert_param(“vs1″, “SourceEncoding=HTML”,  “TargetEncoding=URL”, LAST);

除LoadRunner外,你可以在Fiddler中按Ctrl+E来转换

时间: 2024-11-13 17:37:20

转:LoadRunner中web_custom_request 和 web_submit_data的差别的相关文章

LoadRunner中web_custom_request 和 web_submit_data的差别

Loadrunner中web_custom_request使用场景

其中有一段从服务器段动态返回的字符串需要重新提交给服务器(见红色标注) 录制自动生成的脚本是: web_submit_data("generateYfLstAction.do",      "Action=http://172.32.234.213:8001/SAPIR/commission/generateYfLstAction.do",      "Method=POST",      "TargetFrame=",   

LoadRunner中常用函数参考手册

基础篇1:LoadRunner中常用函数参考手册 常用函数列表 web_url web_submmit_form VS web_submmit_data VS web_custom_request web_custom_request web_concurrent_start(NULL); web_concurrent_end(NULL); ============================分割线================================ 1. web_url Loa

LoadRunner中的Web 函数列表

web test LoadRunner fuction_list D:\Program Files (x86)\Mercury Interactive\Mercury LoadRunner\bin>ls -l *.chm -rw-rw-rw-   1 user     group       25893 May 20  2004 FuncRef.chm -rw-rw-rw-   1 user     group       29443 May 20  2004 RPM_Configuration

LoadRunner中的IP欺骗的设置以及误区

LoadRunner中的IP欺骗的设置以及误区 最近在忙着部署web性能测试的环境后,对IP欺骗进行设置,特地做个笔记,给自己的学习历程留下点足迹. 一. 什么是IP欺骗? 做什么事首先要问个为什么,如果知道为什么了,即使不知道如何做,简单,google it,答案总会找得到,google.cn不行,google.com总行,来自全球的搜索结果,总会有帮助. IP spoof即IP 电子欺骗,我们可以说是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术. IP是网络层

转:LoadRunner中参数化技术详解

LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入.这时,在LoadRunner中就可以进行参数化设置,以使用多个不同的值提交应用请求. [参数化]使用指定数据源中的值来替换脚本录制生成的语句中的参数. [好处] l  减少脚本的大小 l  提供使用不同的值执行脚本的能力,更加真实的模拟现实应用. [参

在LoadRunner中进行Base64的编码和解码

<Base64 Encode/Decode for LoadRunner>这篇文章介绍了如何在LoadRunner中对字符串进行Base64的编码和解码: http://ptfrontline.wordpress.com/2009/09/30/base64-encodedecode-for-loadrunner/ 在头文件中封装b64_encode_string和b64_decode_string函数: /*Base 64 Encode and Decode functions for Loa

在LoadRunner中查找和替换字符串

参考<Search & Replace function for LoadRunner>: http://ptfrontline.wordpress.com/2009/03/13/search-replace-function-for-lr/ LoadRunner中没有直接的函数支持查找并替换字符串,因此可以封装一个lr_replace函数出来: // -------------------------------------------------------------------

DIV中display和visibility属性差别

DIV中display和visibility属性差别 DIV中display和visibility属性差别还是挺大的,虽然Visibility和Display属性都可以达到隐藏页面元素的目的,但它们的区别在于如何回应正常文档流 本节向大家描述一下DIV中display和visibility的差别,visibility属性是隐藏元素但保持元素的浮动位置,而display实际上是设置元素的浮动特征,虽然它们都可以达到隐藏页面元素的目的,但它们的区别在于如何回应正常文档流. DIV中display和v