zoukankan      html  css  js  c++  java
  • web_custom_request和web_submit_data

    网络上很多说明这2个函数区别的文章,我就从其他摘抄了内容,其中区别自己查看附录,我主要说明2点
    (1)用web_custom_request提交请求如果是json,则会会使用关键字符{},但是{},是lr的参数化关键字,所以需要lr中设置:Tool - General Options - Parameterization 中将ParameterBraces 改为<>即可,如图

     
    (2)提交的body中如果有有“=”之类的特殊字符,此时必须通过URL编码,LoadRuner中提供了一个这样的编码转换函数:

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



    附录
    文章转自: http://blog.csdn.net/manchester117/article/details/7914632
     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=属性值” 
    如:
    1. “Name=locale”, “Value=L2″, ENDITEM,   
    2. “Name=dataCenter”, “Value=yh”, ENDITEM,   
    3. “Name=username”, “Value=12044″, ENDITEM,  

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

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

    “Body=属性名称=属性值&属性名称=属性值&……”
    1. web_submit_data(“login”,   
    2.     “Action=http://192.168.14.21:78……ndex_sso.jsp”,   
    3.     “Method=POST”,   
    4.     “RecContentType=text/html”,   
    5.     “Referer=http://192.168.14.21:7888…%3D%2Findex_sso.jsp”,   
    6.     “Mode=HTML”,   
    7.     ITEMDATA,   
    8.     “Name=locale”, “Value=L2″, ENDITEM,   
    9.     “Name=dataCenter”, “Value=yh”, ENDITEM,   
    10.     “Name=username”, “Value=12044″, ENDITEM,   
    11.     “Name=password”, “Value=”, ENDITEM,   
    12.     “Name=_eventId”, “Value=submit”, ENDITEM,   
    13.     “Name=isPureWeb”, “Value=true”, ENDITEM,   
    14.     “Name=solutionName”, “Value=eas”, ENDITEM,   
    15.     “Name=dbType”, “Value=1″, ENDITEM,   
    16.     “Name=easSessionId”, “Value=eas;yh;L2;12044;BaseDB”, ENDITEM,          
    17.     “Name=userAuthPattern”, “Value=BaseDB”, ENDITEM,   
    18.     “Name=loginFlow”, “Value=true”, ENDITEM,   
    19.     LAST);  
    20. web_custom_request(“CommonQueryDialog.jsf_3″,  
    21.     “URL=http://192.168.14.21:7888/ea…ueryDialog.jsf”,  
    22.     “Method=POST”,  
    23.     “Resource=0″,  
    24.     “RecContentType=text/javascript”,  
    25.     “Referer=http://192.168.14.21:7888/…DailyLoanUERc%2Bihtml”,  
    26.     “Mode=HTML”,  
    27.     “EncType=application/x-www-form-urlencoded;charset=UTF-8″,  
    28.     “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}”,  
    29.     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中提供了一个这样的编码转换函数
    1. web_convert_param(“vs1″, “SourceEncoding=HTML”,  “TargetEncoding=URL”, LAST);  
    除LoadRunner外,你可以在Fiddler中按Ctrl+E来转换

     




  • 相关阅读:
    *滚动条cs
    *关于JS动态添加事件
    *JS获取地址栏参数
    *关于Iframe内嵌页面右边总是有空白滚动条的处理
    JAVASCRIPT中使用DOM操作XML文档
    页面间传递变量的方法及使用范围的讨论
    javascript打开模式窗口的用法
    *关于Session*
    *NUnit使用
    Eclipse jQuery plugin spket
  • 原文地址:https://www.cnblogs.com/xxyBlogs/p/5898044.html
Copyright © 2011-2022 走看看