LoadRunner函数详解之web_submit_data

定义:处理无状态或者上下文无关的表单提交。它用来生成表单的GET或POST请求,这些请求与Form自动生成的请求是一样的,发送这些请求时不需要表单上下文。
函数形式:web_submit_data( const char *StepName, const char *Action, , ITEMDATA, , [ EXTRARES, ,] LAST );

说明:

  • 当VuGen设为基于URL的录制模式,或者基于HTML的录制方式时,但 Recording Options—HTML Advanced下的A script containing explicit URLs only选项被选中时,web_submmit_data函数才会被录制。

  • 不论采用URL查询的方式(GET),还是采用请求体发送(POST)的方式,此函数都指示出Form中的数据是如何发送到服务器的。

  • 如果VuGen处于HTTP录制模式下,此时记录Web进程时,会产生此函数。在提交Form时,如果无法生成web_submit_form函数,VuGen也会生成web_submit_data函数。

  • 在录制选项中,Toos—Recording Option下—Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源。只有选择了“Record within the current script step”时,List of Resource Attributes才会被录制到。非HTML资源(如:gif和jpg等图象文件)。

  • 任何对于“EncType”的指定都会覆盖web_add_[auto_]header函数指定的Content-Type。当省略了“EncType”时,任何一个web_add_[auto_]header函数都会起作用。如果既没有指定EncType也没有web_add_[auto_]header函数,且“Method=POST”,“application/x-www-form-urlencoded”会作为默认值来使用。其他情况下,不会产生Content-Type请求头。

  • ContentType:文件类型标识符,如果“EncType”是“multipart/form-data”用来上传文件时,需要用到“ContentType”。当在ITEMDATA中的Data子句中指定了“File=Yes”,且文件也在此子句中,ContentType才适用,此时它会作为同一个子句的值来传递。正常情况下,“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”头将不包含在文件中。如果没有显示的指定“ContentType”的值,当上传的文件为空时,不管文件扩展名是什么,都默认使用“application/x-unknown-content-type”做为”ContentType”的值。VuGen不会检查指定的ContentType是否有效。

  • 通常情况下,如果录制了web_submit_data函数,VuGen会把“name”和“value”一起录制到ITEMDATA一节中。如果不想在脚本中以明文显示“value”,可以对它进行加密。把“Value”改为“EncryptedValue”,然后把录制到的值改为加密后的值。请参考web_submit_form中相关的内容。

示例1:一般的表单提交

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

示例2:web_submit_data使用POST方法提交两个文件

web_submit_data("Attachments", 
    "Action=http://[email protected]/Attachments?YY=45434", 
    "Method=POST", 
    "EncType=multipart/form–data", 
    "TargetFrame=", 
    "RecContentType=text/html", 
    "Referer=http:///[email protected]/Compose?YY=20435", 
    "Snapshot=t5.inf", 
    "Mode=HTML", 
    ITEMDATA, 
        "Name=userFile0", 
        "Value=E:\\sense_sensibility\\Elinor.htm", 
        "File=yes", 
        "ContentType=text/html", // Override default "text/plain" for .txt files 
        FilePath=Elinor.txt", "ContentTransferEncoding=html/text", ENDITEM, "Name=userFile1", "Value=E:\\sense_sensibility\\Marianne.jpg", "File=yes", ENDITEM, LAST ); 注:表单中enctype="multipart/form-data"的意思是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作。 enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。

你可能感兴趣的:(loadrunner)