zoukankan      html  css  js  c++  java
  • LR-web_submint_form和 web_submint_data

    在LoadRunner中有两个常用函数:Web_submit_form和Web_submit_data,在群里有人问这两个函数有什么区别。为什么会有两个不同却功能相似的函数?区别在哪里?

    web_submit_form()会依赖上下文,即如果前面的页面打开失败或没有打开,则该操作就会失败,如:登陆一个论坛成功后,点击某个板块,然后发帖(写入帖子题目和内容,提交,相当于向服务器发送了一个post请求),如果点击某个模块后打开链接页面失败,则web_submit_form()就会失败,即依赖于板块的链接页面是否成功打开,如果没有打开,就不能进行后面的发帖了。

    web_submit_data():不依赖上下文,如上面的例子,不管是否打开模块的链接页面,就直接向服务器发送post请求。

    ps:web_link()也依赖于上下文,所以用LR录制脚本时,最好选择script type为:web_url和web_submit_data(),设置的地方:tools-->recording options-->general-recoding-HTML-advanced-->script type,选择第二项。
    ---------------------
    作者:xiangxiupp
    来源:CSDN
    原文:https://blog.csdn.net/xiangxiupp/article/details/53965820
    版权声明:本文为博主原创文章,转载请附上博文链接!

    示例:web_submit_data

    格式:

    int web_submit_data(const char *StepName,const char * Action,<Listof Attributes>,ITEMDATA,<数据列表>,[EXTRARES,<资源属性列表],] LAST)

    在以下示例中,web_submit_data函数使用POST方法提交表单:

    web_submit_data(“default.aspx”,  ---StepName:步骤的名称,如图形脚本中所示。

        “Action = http://lazarus/flightnet/default.aspx”,  ----Action提交数据时要执行的操作的HTTP地址。语法是“Action =<urlAddress>”

        “Method = POST”,  ----表单提交方法:POST或GET(默认值:POST)

        “TargetFrame =”,   ----包含当前链接或资源的帧的名称

       “EncType=”,--------使用的编码方法。

       “EncodeAtSign=”,----以其ASCII表示法编码“@”符号。可能的值为是或否。

        “RecContentType = text / html”,----包含当前链接或资源的帧的名称。

        “Referer = http://lazarus / flightnet /”,-----引用网页的URL

        “Snapshot = t7.inf”,

        “Mode = HTML”,----录制协议脚本级别:HTML或HTTP。

        ITEMDATA,------在属性和数据字段列表之间分隔的标记。 (不在Java语法中使用)

        “Name = grpType”,“Value= radRoundtrip”,ENDITEM,

        “Name = lstDepartingCity”,“Value = DEN”,ENDITEM,

        “Name = lstDestinationCity”,“Value = LAX”,ENDITEM,

        “Name = txtDepartureDate”,“Value = 8/19/2003”,ENDITEM,

        “Name = txtReturnDate”,“Value = 8/19/2003”,ENDITEM,

        “Name = txtQuantity”,“Value= 1”,ENDITEM,

        “Name = radClass”,“Value= 1”,ENDITEM,

        “Name = radSeat”,“Value= 1”,ENDITEM,

        “Name = btnAvailableFlights”,“Value = Next>”,ENDITEM,----一个分界参数,指示下一个参数将是资源属性列表。

        LAST);-----指示字段列表结束的标记。

    EncType属性详解

    EncType属性指定要指定为“Content-Type”请求头的值的内容类型。它指示用于从其他参数生成HTTP请求的编码类型(URL编码或多部分)。允许的规格有:

    “EncType = application / x-www-form-urlencoded”

    “EncType = multipart / form-data”(任何“;boundary =”被静默忽略)

    “EncType =”(一个空字符串,表示不生成“Content-Type”请求头)。

    EncType规范以静默方式覆盖“Content-Type”的任何web_add_ [auto_]标题。如果省略EncType,则使用任何适用的web_add_ [auto_]标头。如果没有并且“Method = POST”,则使用“application / x-www-form-urlencoded”。如果方法不是POST,则不会生成“Content-Type”请求头。

    Listof Resource Attributes资源属性列表:

    网页中非HTML机制生成的资源列表。这些包括Javascript,ActiveX,Javaapplet和Flash请求的资源。 VuGen的记录选项允许这些元素在当前脚本步骤(默认模式)下记录,或记录为单独的步骤(请参阅VuGen Online Book中的“以HTML为基础的模式记录”)。

    在当前脚本步骤中记录时,额外的资源将作为操作语句的参数列出。支持以下资源属性:

     URL要加载的Web资源的URL(统一资源定位符)

    Referer引用网页的URL。点击这里了解更多信息。

    ENDITEM指示列表中每个资源结束的标记。

    与将每个资源作为单独的步骤进行记录相比,在此模式下记录非HTML元素会使脚本短而可读,尤其是在VuGen的树视图中。

    当在例如Javascript中遇到额外资源时,VuGen记录器将资源添加到额外资源的列表(资源属性列表参数)。重放脚本时将请求该资源。如果资源是可能定期更改的资源,则可以使用相关函数对资源进行参数化。在以下示例中,额外资源另存为extrares_11:

    web_reg_save_param(“extrares_11”,

        “LB / IC = <img src = ”“,

        “RB = ”“,

        “Ord = 11”,

        LAST);

    web_url(“web_url”,

        “URL = http://lazarus/html/links.html”,

        “TargetFrame =”,

        “Resource = 0”,

        “Referer =”,

        “Mode = HTTP”,

        EXTRARES,

        “URL = {extrares_11}”,ENDITEM,

    LAST);

    Item Data

    ItemData部分中的可能条目是:

    Name- 表单字段名称。例如:“Name =name_of_files”

    Value- 多部分消息的Content-Disposition参数中的值。例如:“Value = c:/dummy/dummy.doc”文件 - 消息内容是否为文件。例如:“File = Yes”

    Content-Type- 多部分消息的Content-Type参数中的值(例如:“ContentType = text / special”)。在EncType是多部分/表单数据文件上传的情况下,在ItemData部分中需要Content-Type(文件类型说明符)。 Content-Type作为ITEMDATA节中的数据子句的一个值传递,其中指定了“File = Yes”,并且仅适用于同一子句中的文件。

    FilePath-上传文件的路径,例如“FilePath = stub.txt”。路径可以是相对的(推荐)或绝对路径。如果为relative,则路径基于值条目中指定的路径。反斜杠必须转义。 FilePath作为ITEMDATA部分中指定了“File = Yes”的数据子句的一个值传递。

    ContentTransferEncoding- 多部分消息的Content-Transfer-Encoding参数中的值(例如,“ContentTransferEncoding = html / text”)。ContentTransferEncoding作为ITEMDATA部分中指定了“File = Yes”的数据子句的一个值传递。

    通常,根据上传的文件的扩展在请求主体中生成“Content-Type”。例如:

    -----------------------------7d025e2b16b064e r n Content-Disposition:form-data; name =“uploaded_file”; filename =“D:\temp \ a.txt” r n Content-Type:text / plain r n r n

    但是,对于非浏览器应用程序,基于文件类型的内容类型可能不正确。要覆盖它,可以指定ContentType。指定空值将导致此文件不包括Content-Type头。

    当上传的文件为空时,使用“application / x-unknown-content-type”,而不管文件扩展名。显式指定ContentType(为空或不为空)将覆盖此机制。

    不尝试检查指定的ContentType是否被识别或有效。

    当记录web_submit_data时,通常在ITEMDATA部分中记录项目的“名称”和“值”。如果您不希望记录的值出现在脚本中,您可以对其加密。将单词“Value”更改为“EncryptedValue”,并将加密值替换为记录值。

    例如:

    Change:

    “Name = grpType”,“Value = radRoundtrip”,ENDITEM,

    To:

    “Name = grpType”,“EncryptedValue = 409e41ebf102f3036b0549c799be3609”,ENDITEM,

    要获取加密的值,请复制记录的值。Then run Start > Programs Files >LoadRunner > Tools > Password encoder. Paste the value into thePasswordfield, and click Generate. The encrypted string appears in theEncodedstring box. Click the Copy button, then paste the encryped stringinto the script, overwriting the recorded value. The encrypted string appearsin theEncoded string box. Click the Copy button, then paste theencryped string into the script, overwriting the recorded value.

    用于加密该值的另一​​个选项是将整个值字符串转换为lr_decrypt调用。选择引号之间的整个字符串,不包括引号。右键单击所选字符串,然后选择加密字符串选项。输出如下所示:

    “Name = grpType”,lr_decrypt(“40d176c46f3cf2f5fbfaa806bd1bcee65f0371858163”),ENDITEM,

    所有Web脚本以及以HTTP模式或无线会话协议(WSP)重放模式运行的WAP脚本支持此功能。

    在以下示例中,web_submit_data函数使用POST方法提交两个文件:

    web_submit_data(“附件”,

        “Action = http://barton.cottage@.Devonshire.uk/Attachments?YY = 45434”,

        “Method = POST”,

        “EncType = multipart / form-data”,

        “TargetFrame =”,

        “RecContentType = text / html”,

        “Referer = http:///barton.cottage@.Devonshire.uk/Compose?YY = 20435”,

        “Snapshot = t5.inf”,

        “Mode = HTML”,

        ITEMDATA,

            “Name = userFile0”,

            “Value = E:\sense_sensibility \ Elinor.htm”,

            “File = yes”,

            “ContentType = text / html”,//覆盖默认的“text / plain”for .txt

            FilePath= Elinor.txt“,

            “ContentTransferEncoding = html / text”,

        ENDITEM,

            “Name = userFile1”,

            “Value = E:\sense_sensibility \ Marianne.jpg”,

            “File = yes”,

        ENDITEM,

    LAST);

  • 相关阅读:
    关于xml中有特珠字符而导致XmlDocument无法Load的处理
    【转载】Session分布式共享 = Session + Redis + Nginx
    jQuery ajax 请求php遍历json数组到table中
    VS2015+MySql+EF6采坑经验总结
    请教如何用ASP.NET实现http://abc.com/orderID这样的URL???
    silverlight chart 折线图 的线颜色如何修改???
    SL 的 DATAGRID中如何加入计算列?
    中软酒店管理系统之会员消费短信提醒工具开发
    enable_shared_from_this
    python,flask,login,login_request
  • 原文地址:https://www.cnblogs.com/lnn123/p/10019307.html
Copyright © 2011-2022 走看看