LoadRunner接口函数web

LoadRunner接口函数web_custom_request

在我们录制脚本时,正常情况下一般都是使用HTML记录的方式来录制脚本。生成的脚本中绝大部分都是使用web_submit_data或web_submit_form函数来提交请求。但是如果请求不能使用web_submit_data或web_submit_form函数提交时,那么LoadRunner会生成自动定义请求函数来提交请求。自定义请求函数为web_custom_request。

对于使用HTML方式录制好的脚本也可以通过重新生成脚本的方式,将脚本变成以自定义请求函数提交请求的脚本。其步骤如下:

1) 选择重新生成脚本

对于使用HTML方式录制好的脚本也可以通过重新生成脚本的方式,将脚本变成以自定义请求函数提交请求的脚本。其步骤如下:

单击Tools菜单,在弹出的下拉菜单中选择Regenerate Script,如图所示。


LoadRunner接口函数web_custom_request


2) 在弹出的对话框中单击“选项”按钮,如图所示。

LoadRunner接口函数web_custom_request


3) 设置录制方式。

在弹出的Regenerate Options对话框中,选择Recording选项,然后再选择URL-based>

在弹出的Advanced URL对话框中,选中“Use web_custom_request only”选择项。如图所示。

LoadRunner接口函数web_custom_request

完成后脚本会修改为都是以自动定义请求的方式发送请求。

web_custom_request函数语法如下:

int web_custom_request( const char *RequestName, ,

[EXTRARES, ,] LAST );

web_custom_request函数主要包括以下属性选项:

1) URL

提交请求的地址

2) Method

表单提交的方法,一般有两种:GET或POST。

3) TargetFrame

表示当前链接或资源的Frame名称。除了Frame的名字,还可以设置以下参数:

_BLANK:打开一个新的窗口。

_PARENT:使用最新的Frame代替上级的Frame。

_SELF:替换最新更改过的Frame。

_TOP:替换整个页面。

4) EncType

使用的编码方法的类型,指定内容类型(Content-Type),指定其做为回放脚本时“Content-Type”请求头的值,例如“text/html”。Web_custom_request函数不会处理未编码过的请求体,请求体参数将会使用已经指定的编码方式。因此,如果指定了不匹配HTTP请求体的“EncType”,会引起服务端产生错误。通常建议不要手动修改录制时的“EncType”值,因为任何对于“EncType”的指定都会覆盖web_add_[auto_]header函数指定的Content-Type。当指定了“EncType=”(空值)时,不会产生“Content-Type” 请求头。当省略了“EncType”时,任何一个web_add_[auto_]header函数都会起作用。如果既没有指定EncType也没有web_add_[auto_]header函数,且“Method=POST”,“application/x-www-form-urlencoded”会

做为默认值来使用。其他情况下,不会产生Content-Type请求头。

5) RecContentType

表示响应头的内容类型。录制脚本时响应头的内容类型。例如text/html、 application/x-javascript等。如果没有设置Resource属性,那么可以用它来确定目标URL是否是可记录的资源。此属性包含主要的和次要的资源。最频繁使用的类型是 text、application、image。次要的类型根据资源不同变化很多。例如:“RecContentType=text/html”:表示html文本,“RecContentType=application/msword”:表示当前使用的是Msword。

6) Referer

表示当前页面关联的页面,如果当前的位置是一个明确的,那么此项可以省略。

7) Body

表示请求体的内容。即请求时所用到的相关参数。

8) Raw Body

表示请求体是以指针的方式进行传递。Raw Body的语法格式如下:

RAW_BODY_START,

缓存数据指针

(int) length,

RAW_BODY_END

如以下实例:

char *test="helloworld"

web_custom_request("StepName",

"URL= http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/user.php ",

"Method=POST",

RAW_BODY_START,

" test ",

5,

RAW_BODY_END,

LAST);

9) BodyFilePath

作为请求体传送的文件的路径。它不能与下面的属性一起使用:Body或者其他Body属性或Raw Body属性包括BodyBinary、BodyUnicode、RAW_BODY_START或Binary=1

10) Mode

表示两种录制方式:HTML或HTTP。

关于Body中数据传输的方式有三种:一是表单格式的数据;二是JSON格式的数据;三是二进制格式的数据。

下面是一个登录的脚本,录制使用的是web_submit_data函数提交请求的。

web_submit_data("user.php",

"Action=http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/user.php",

"Method=POST",

"RecContentType=text/html",

"Referer=http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/user.php",

"Snapshot=t40.inf",

"Mode=HTTP",

ITEMDATA,

"Name=username", "Value=test", ENDITEM,

"Name=password", "Value=111111", ENDITEM,

"Name=act", "Value=act_login", ENDITEM,

"Name=back_act", "Value=http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/", ENDITEM,

"Name=submit", "Value=", ENDITEM,

LAST);

下面将使用web_custom_request函数以表单的方式进行提交请求。

web_custom_request("user.php",

"URL=http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/user.php",

"Method=POST",

"RecContentType=text/html",

"Mode=HTTP",

"Body=username=test&password=111111&act=act_login&submit=",

LAST);

为了让代码看上去再直观可以将代码修改成以下格式:

web_custom_request("user.php",

"URL=http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/user.php",

"Method=POST",

"RecContentType=text/html",

"Mode=HTTP",

"Body=username=test&"

"password=111111&"

"act=act_login&submit="

,

LAST);

下面将使用web_custom_request函数以JSON的方式进行提交请求。

web_custom_request("user.php",

"URL=http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/user.php",

"Method=POST",

"RecContentType=text/html",

"Mode=HTTP",

"Body=username=test&password=111111&act=act_login&submit=",

"Body= {"username":test,"password":111111,"act":act_login,"submit":}",

LAST);

也可以使用Body发送二进制格式的数据,如以下代码:

web_custom_request("test",

"URL=http://www.bing.com",

"Method=POST",

"TargetFrame=",

"Resource=0",

"Mode=HTTP",

"Body=\\x68\\x65\\x6C\\x6C\\x6F",

LAST);


分享到:


相關文章: