loadrunner Web_类函数之web_submit_data()

来源:互联网 发布:raptor编程1到100之和 编辑:程序博客网 时间:2024/05/19 15:41

web_submit_data()--常用函数

执行“无状态条件”或“无上下文”表单提交,基于数据源的

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

 

参数说明:

object:评估到类型为WebApi的对象的表达式。通常是web for Java和Visual Basic。另请参见函数和常量前缀。

StepName:步骤的名称,如图形脚本中所示。

操作:提交数据时要执行的操作的HTTP地址。点击这里了解详情。语法是“Action =<urlAddress>”

List of Attributes :支持以下属性:

Method:表单提交方法:POST或GET(默认值:POST)。

EncType:使用的编码方法。

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

TargetFrame:包含当前链接或资源的帧的名称。点击这里了解更多信息。

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

Mode:录制协议脚本级别:HTML或HTTP。点击这里了解更多信息。

UserAgent:标识将执行该步骤的浏览器以外的组件,例如,在浏览器下运行的ActiveX

组件。将为该步骤发出的请求发送此用户代理标头。不进行检查以确认用户代理参数与浏

览器的用户代理运行时设置匹配。非浏览器步骤不会影响模拟的浏览器上下文,也不会从

结果中创建新的上下文。

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

List of Data :用于定义表单提交的数据字段列表。因为请求是无上下文的,所以数据字段列表包括所有隐藏的字段。提交表格的数据编码规则适用。有关列表中可能条目的列表,请参阅项目数据。

值字段可以是加密的或简单的,例如:

“name = n1”,“value = v1”,ENDITEM,

“name = n2”,“EncryptedValue = qwerty”,ENDITEM,

EXTRARES:一个分界参数,指示下一个参数将是资源属性列表。

List of Resource Attributes :资源属性列表

LAST:指示字段列表结束的标记。

 

一般信息:

web_submit_data函数是执行“无条件”或“无上下文”表单提交的动作函数。它允许您生成HTML表单所做的GET和POST请求。您不需要具有表单上下文来执行此请求。

仅当VuGen处于基于URL的记录模式或基于HTML的记录模式(仅包含显式URL选项选项)时才会记录web_submit_data(请参见VuGen的记录选项)。

该方法指示如何将表单的数据发送到服务器,无论是作为URL(GET)中的查询,还是作为请求正文(POST)。

当VuGen设置为在HTTP(来自服务器的所有请求)记录模式下记录Web会话时生成此函数。 VuGen还会在提交表单时记录一个web_submit_data语句,并且无法生成web_submit_form语句。

非HTML生成的资源的示例是.gif和.jpg图像。仅当在当前脚本步骤中将这些资源的记录选项设置为Record时,才会插入资源属性列表。这是默认设置。

在对lrapi.web.submit_data的Java调用中,属性列表(包括隐藏字段)是选项数组的一部分。数据列表和资源列表是数据数组的一部分。

可以修改HTTP头以将关于请求的附加信息传递到服务器。使用HTTP标头,您可以(例如)允许响应中的其他内容类型(例如压缩文件),或者您只能在特定条件下请求网页。要修改请求中的HTTP头,请参阅web_add_header,或修改所有后续请求,请参阅web_add_auto_header。

 

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 clickGenerate. The encrypted string appears in theEncodedstring box. Click theCopy button, then paste the encryped stringinto the script, overwriting the recorded value. The encrypted string appearsin theEncoded string box. Click theCopy 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

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

web_submit_data(“default.aspx”,

    “Action = http://lazarus/flightnet/default.aspx”,

    “Method = POST”,

    “TargetFrame =”,

    “RecContentType = text / html”,

    “Referer = http://lazarus / flightnet /”,

    “Snapshot = t7.inf”,

    “Mode = HTML”,

    ITEMDATA,

    “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);

 

在以下示例中,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);

阅读全文
0 0