web_url
语法:
Int Web_url(constchar *name, const char * url, <Lists of Attributes>,
[EXTRARES,<Listsof Resource Attributes>,LAST)
返回值:成功时返回 LR_PASS (0),失败时返回 LR_FAIL (1)。
参数:
Name:VuGen 中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。
url:页面 url 地址。
List of Attributes
EXTRARES:分隔符,标记下一个参数是资源属性的列表了。
List of Resource Attributes
LAST:属性列表结束的标记符。
说明
Web_url 根据函数中的 URL 属性加载对应的 URL,不需要上下文。
只有 VuGen 处于 URL-based 或者 HTML-based(此时 A scriptcontaining explicit URLs
only 选项被选中时)的录制模式时,web_url 才会被录制到。
可以使用 web_url 模拟从 FTP服务器上下载文件。web_url 函数会使 FTP服务器执行文件
被真实下载时的操作。除非手工指定了"FtpAscii=1",下载会以二进制模式完成。
在录制选项中,Toos—RecordingOption 下,Recording 选项中,有一个 Advanced HTML
选项,可以设置是否录制非 HTML 资源,只有选择了“Record within the current script step”
时,List of Resource Attributes 才会被录制到。非 HTML 资源的例子是 gif 和 jpg 图象文件。
通过修改 HTTP头可以传递给服务器一些附加的请求信息。使用 HTTP头允许请求中包含
其他的内容类型(Content_type),象压缩文件一样。还可以只请求特定状态下的 web 页
面。
所有的 Web Vusers ,HTTP模式下的 WAP Vusers 或者回放模式下的 Wireless
SessionProtocol(WSP),都支持 web_url 函数。
web_image
语法:
Int web_image(const char *StepName, <List of Attributes>, [EXTRARES, <List
ofResource Attributes>,] LAST );
返回值
成功时返回 LR_PASS (0),失败时返回 LR_FAIL (1)。
参数:
StepName:VuGen 中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。
List of Attributes(服务器端和客户端映射的图片):SRC 属性是一定会被录制到的,其他
的 ALT、Frame、TargetFrame、Ordinal 则是有的话会被录制到。
1、ALT:描述图象的元素。用鼠标指向图象时,所浮出来的文字提示。
2、SRC:描述图象的元素,可以是图象的文件名.如: button.gif。也可以使用 SRC/SFX
来指定图象路径的后缀。所有拥有相同此后缀的字符串都会被匹配到。
3、Frame:录制操作时所在的 Frame 的名称。
4、TargetFrame:见 List of Attributes 的同名参数。
5、Ordinal:参见 Web_link 的同名参数。
List of Attributes(客户端映射的图片):
1、AreaAlt:鼠标单击区域的 ALT 属性。
2、AreaOrdinal:鼠标单击区域的顺序号。
3、MapName:图象的映射名。
List of Attributes(服务器端映射的图片):尽管点击坐标不属于属性,但还是以属性的格
式来使用。
1、Xcoord:点击图象时的 X坐标。
2、Ycoord:点击图象时的 Y坐标。
EXTRARES:分隔符,标记下一个参数是资源属性的列表了。
List of Resource Attributes:参见 List of Resource Attributes 一节。
LAST:属性列表结束的标记符。
说明
web_image 模拟鼠标在指定图片上的单击动作。此函数必须在有前置操作的上下文中使用。
在 Toos—RecordingOption,如果录制级别设为基于 HMTL 的录制方式时,web_image 才
会被录制到。
web_image 支持客户端(client-side)和服务器端 server-side 的图片映射。
在录制选项中,Toos—RecordingOption 下,Recording 选项中,有一个 Advanced HTML
选项,可以设置是否录制非 HTML 资源,只有选择了“Record within the current script step”
时,List of Resource Attributes 才会被录制到。非 HTML 资源的例子是 gif 和 jpg 图象文件。
通过修改 HTTP头可以传递给服务器一些请求附加信息。使用 HTTP头允许请求中包含内
容,如同压缩文件一样。还可以只请求特定状态的 web 页面。
web_image 支持 Web 虚拟用户,不支持 WAP虚拟用户。
例子
下面的例子模拟用户单击 Home 图标以回到主页(黑体部分):
web_url("my_home", "URL=http://my_home/",LAST);
web_link("Employees","Text=Employees", LAST);
web_image("Home.gif","SRC=../gifs/Buttons/Home.gif", LAST);
web_link("Library", "Text=Library",LAST);
web_image("Home.gif","SRC=http://www.cnblogs.com/gifs/buttons/Home.gif", LAST);
下面的例子模拟用户在客户端映射的图片上单击:
web_image("dpt_house.gif",
"Src=../gifs/dpt_house.gif",
"MapName=dpt_house",
"AreaOrdinal=4",
LAST);
下面的例子模拟用户在服务端映射的图片上单击:
web_image("The Web Developer's VirtualLibrary",
"Alt=The Web Developer's Virtual Library",
"Ordinal=1",
"XCoord=91",
"YCoord=17",
LAST);
下面是一个使用文件名后缀的例子:它指定了 dpt_house.gif 作为后缀,所以
象../gifs/dpt_house.gif、/gifs/dpt_house.gif、gifs/dpt_house.gif、/dpt_house.gif 等都会匹
配到。
web_image("dpt_house.gif","Src/sfx=dpt_house.gif",LAST);
web_link
语法:
Int web_link(const char *StepName, <List of Attributes>, [EXTRARES, <List
ofResource Attributes>,] LAST ) ;
返回值
成功时返回 LR_PASS (0),失败时返回 LR_FAIL (1)。
参数:
StepName:VuGen 中树形视图中显示的名称,在自动事务设置中也被用做事务名称。
List of Attributes:支持下列的属性:
1. Text:超链接中的文字,必须精确匹配。
2. Frame:录制操作时所在的 Frame 的名称。
3. TargetFrame、ResourceByteLimit:见 List of Attributes 一节。
4. Ordinal:如果用给出的属性(Attributes)筛选出的元素不唯一,那么 VuGen 使用此属
性来指定其中的一个。例如:“SRC=abc.gif”,“Ordinal=3”标记的是 SRC 的值是“abc.gif”的
第 3 张图片。
EXTRARES:表明下面的参数将会是 list of resourceattributes 了。
LAST:结尾标示符。
说明
模拟鼠标在由若干个属性集合描述的链接上进行单击。此函数必须在前置动作的上下文
中才可以执行。
web_link 仅仅在基于 HTML 的录制方式中才会被 VuGen 捕捉到。
非 HTML 生成的资源的例子有.gif 和.jpg 图像。对于 List of ResourceAttributes 参数来说,
仅仅当 RecordingOptions--Recording --HTML-based script-- Record within the current
script step 选项被选中时,它们才会被插入到代码中。
可以通过改变 HTTP头信息给服务器传递一些附加信息。使用 HTTP头信息可以,允许响
应体中包含其他的内容类型(Content-Type),例如压缩文件,或者只有满足了特定的状
态才去请求 web 页。
此函数值支持 Web 虚拟用户,不支持 WAP虚拟用户。
web_submmit_form
语法:
Intweb_submit_form (const char *StepName, <List of Attributes>, <List ofHidden
Fields>, ITEMDATA, <List of Data Fields>, [ EXTRARES, <Listof Resource
Attributes>,] LAST );
返回值
成功时返回 LR_PASS (0),失败时返回 LR_FAIL (1)。
参数:
StepName:Form的名字。VuGen 中树形视图中显示的名称,在自动事务处理中也可以
用做事务的名称。
List of Attributes:支持以下属性:
1. Action:Form中的 ACTION属性,指定了完成 Form中的操作用到的 URL。也可以使
用“Action/sfx”表示使用此后缀的所有 Action。
2. Frame:录制操作时所在的 Frame 的名称。
3. TargetFrame、ResourceByteLimit:见 List of Attributes 的同名参数。
4. Ordinal:参见 Web_link 的同名参数。
VuGen 通过记录数据域唯一的标识每个 Form。如果这样不足以识别 Form,VuGen 会记
录 Action 属性。如果还不足以识别,则会记录 Ordinal 属性,这种情况下不会记录 Action
属性。
List of Hidden Fields:补充属性(Serves)。通过此属性可以使用一串隐含域来标识
Form。使用下面的格式:
STARTHIDDENS,
"name=n1", "value=v1", ENDITEM,
"name=n2", "value=v2", ENDITEM,
ENDHIDDENS,
List of Data Fields
Data 项用来标识 form。Form是通过属性和数据来共同识别的。
使用下面的格式来表示数据域列表
"name=n1", "value=v1", ENDITEM,
"name=n2", "value=v2", ENDITEM,
ITEMDATA:Form中数据和属性的分隔符。
EXTRARES:一个分隔符,标记下一个参数是资源属性的列表了。
List of Resource Attributes:参见 List of Resource Attributes 一节。
LAST:属性列表结束的标记符。
说明
web_submit_form 函数用来提交表单。此函数可能必须在前一个操作的上下文中执行。在
Toos—Recording Option,只有录制级别设为基于 HMTL 的录制方式,web_image 才会被
录制到。
在录制选项中,Toos—RecordingOption 下,Recording 选项中,有一个 Advanced HTML
选项,可以设置是否录制非 HTML 资源,只有选择了“Record within the current script step”
时,List of Resource Attributes 才会被录制到。非 HTML 资源的例子是 gif 和 jpg 图象文件。
通常情况下,如果录制了 web_submit_form函数,VuGen 会把“name”和“value”一起录制
到 ITEMDATA属性中。如果不想在脚本中以明文显示“value”,可以对它进行加密。把
“Value”改为“EncryptedValue”,然后把录制到的值改为加密后的值。
例如:可以把"Name=grpType", "Value=radRoundtrip", ENDITEM
改为:"Name=grpType",EncryptedValue=409e41ebf102f3036b0549c799be3609",
ENDITEM
如果你完整的安装了 LoadRunner,那么打开开始菜单--Mercury LoadRunner—Tools--
PasswordEncoder,这个小工具是用来加密字符串的。把需要加密的值粘贴到 Password
一栏,再点 Generate 按钮。加密后的字符串会出现在 Encoded string 框中。接着点 Copy
按钮,然后把它粘贴到脚本中,覆盖原来显示的“Value”。
加密的另一种方法时使用 lr_decrypt 函数。方法:选择整个字符串,例如
“Value=radRoundtrip”(注意不要选择引号),右击鼠标,选择 Encrypt string 选现,脚本
会变为:
"Name=grpType",
lr_decrypt("40d176c46f3cf2f5fbfaa806bd1bcee65f0371858163"),ENDITEM,
web_submit_form支持 Web 虚拟用户,不支持 WAP虚拟用户。
例子:
下面的例子中,web_submit_form函数的名字是“employee.exe”。此函数提交了一个请
求,此请求包含雇员信息 John Green。此函数没有使用属性(Attributes)是因为通过数据
项已经能唯一的标识这个 Form了。
web_submit_form("employee.exe",
ITEMDATA,
"name=persons", "value=John Green -John", ENDITEM,
"name=go_page", "value=Go to Page",ENDITEM,
LAST);
web_submmit_data
语法:
Intweb_submit_data ( const char *StepName, <List of Attributes>, ITEMDATA,<List
of data>, [ EXTRARES, <List of Resource Attributes>,] LAST );
返回值
返回 LR_PASS(0)代表成功,LR_FAIL(1)代表失败。
参数:
StepName:步骤名称,VuGen 中树形视图显示的名称。
List of Attributes:支持以下属性:
1. Action:Form中的 ACTION属性,指定了完成 Form中的操作用到的 URL。
2. Method:表单提交方法:POST 或 GET(默认是 POST)。
3. EncType:编码方式。
4. EncodeAtSign:是否使用 ASCII值对符号“@”编码。Yes 或者 No。
5. TargetFrame:包含当前链接或资源的 Frame。参见 List of Attributes 的同名参数。
6. Referer、Mode:参见 List of Attributes 的同名参数。
ITEMDATA:数据域和属性的分隔符。
List of Data:
数据域列表定义了表单提交的内容。由于此请求是上下文无关的,因此数据域包含了所有
的隐含域。使用 Form的编码规则组织数据域。
数据域列表可以使用下面任意一种格式:
"name=n1", "value=v1", ENDITEM,
"name=n2", "EncryptedValue=qwerty",ENDITEM,
EXTRARES:分隔符,标记下一个参数将是资源属性的列表。
List of Resource Attributes:参见 List of Resource Attributes。
LAST:结束标记符。
说明
web_submit_data 函数处理无状态或者上下文无关的表单提交。它用来生成表单的 GET
或 POST 请求,这些请求与 Form自动生成的请求是一样的。发送这些请求时不需要表单
上下文。
当 VuGen 设为基于 URL 的录制模式,或者基于 HTML 的录制方式但是
RecordingOptions—HTML Advanced 下的 A scriptcontaining explicit URLs only 选项被选
中时,web_submmit_data 函数才会录制到。
不论你采用 URL 查询的方式(GET),还是采用请求体发送(POST)的方式,此函数都
指示出 Form中的数据是如何发送到服务器的。
如果 VuGen 处于 HTTP录制模式下,此时记录 Web 进程时,会产生此函数。在提交
Form时,如果无法生成 web_submit_form函数,VuGen 也会生成 web_submit_data 函
数。
在录制选项中,Toos—RecordingOption 下—Recording 选项中,有一个 Advanced HTML
选项,可以设置是否录制非 HTML 资源。只有选择了“Record within the current script step”
时,List of Resource Attributes 才会被录制到。非 HTML 资源的例子是 gif 和 jpg 图象文件。
EncType 属性给出一个内容类型,指定其做为“Content-Type”请求头的值。它指示了根据
参数生成 HTTP请求时使用的编码类型(不是 URL-encoding 就是 multi-part)可以是下面
的格式:
1. “EncType=application/x-www-form-urlencoded”
2. “EncType=multipart/form-data” (任何的“; boundary=”都会被默认忽略掉)
3. “EncType=” (空串,表明没有产生内容类型(“Content-Type”)请求头)
任何对于“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”不一定
是正确的。这时,通过手工指定来覆盖默认的“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中相关的内容。
所有的 Web 虚拟用户,运行在 HTTP模式下的 WAP用户,运行在 WSP回放模式下的
WAP用户都可以使用本函数。
例子
下面的例子中,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 方法提交了 2 个文件。
web_submit_data("Attachments",
"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.txt",
"File=yes",
"ContentType=text/html", // 覆盖了文本文件默认的“text/plain”值。
ENDITEM,
"Name=userFile1",
"Value=E:\\sense_sensibility\\Marianne.jpg",
"File=yes",
ENDITEM,
LAST);
web_custom_request
语法:
Intweb_custom_request (const char *RequestName, <List of Attributes>,
[EXTRARES,<List of Resource Attributes>,] LAST );
返回值
返回 LR_PASS(0)代表成功,LR_FAIL(1)代表失败。
参数:
RequestName:步骤的名称,VuGen 中树形视图中显示的名称。
List of Attribute:支持的属性有以下几种:
1. URL:页面地址。
2. Method :页面的提交方式,POST 或 GET。
3. TargetFrame:包含当前链接或资源的 frame 的名称。参见 List of Attributes 的同名参
数。
4. EncType:编码类型。
5. RecContentType:响应头的内容类型。参见 List of Attributes 的同名参数。
6. Referer:参见 List of Attributes 的同名参数。
7. Body:请求体。参见 List of Attributes 的同名参数。
8. RAW BODY:参见 List of Attributes 的同名参数。
9. BodyFilePath:作为请求体传送的文件的路径。它不能与下面的属性一起使用:Body,
或者其他 Body 属性或 Raw Body 属性包括 BodyBinary,BodyUnicode,
RAW_BODY_START 或 Binary=1。
10. Resource、ResourceByteLimit、Snapshot、Mode:参见 List of Attributes 的同名参
数。
11. ExtraResBaseDir:参见 List of Attributes 的同名参数。
12. UserAgent:用户代理,它是一个 HTTP头的名字,用来标识应用程序,通常是浏览器,
它呈现的是用户和服务器的交互。
例如:头信息“User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”识别的是
Window NT 下的 IE浏览器 6.0。其他的 User-Agent 的值用来描述其他的浏览器,或者非
浏览器程序。通常,一个应用程序中所有的请求都使用相同的用户代理,录制者作为一个
运行时参数来指定(Run-TimeSetting—Browser Emulation—User Agent)。不管怎么说,
即使是在一个简单的浏览器进程中,仍有可能会用到直接与服务器交互的非浏览器组件
(例如 ActiveX控件),通常他们有着不同于浏览器的用户代理属性。指定“UserAgent”表
示这是一个非浏览器的请求。指定的字符串被 HTTP 头“User-Agent:”使用,在某些情况下,
它同时会影响回放脚本时的行为。例如,不使用浏览器缓存,假设指定的 URL 属于资源等
等。
LoadRunner 本身不检查指定的字符串与浏览器本身的值是否相同。
13. Binary:“Binary=1”表示页面请求体中的每一个以\\x##形式出现的值(在这里“##”代表
2 个十六进制数字),都会被替换为单字节的十六进制的值。
如果“Binary=0”(默认值),所有的字符序列只是按照字面的值传递。
需要注意双斜杠的用法。在 C 编译器中双斜杠被解释为单斜杠。如果不需要零字节,单斜
杠可以在 Binary 不等于 1 的情况下使用(例如,使用\x20 代替\\x20)。如果需要零字节,
那么只能使用\\x00 且设置 “Binary=1”,\x00 在逻辑上会被截断。
14. ContentEncoding
指定请求体的使用指定的方式(gzip 或者 deflate)进行编码(例如,压缩),相应的
“Content-Encoding:” HTTP 头会和此请求一起发送。这个参数适用于
web_custom_request 和 web_submit_data。
EXTRARES:表明下面的参数将会是 List Of ResourceAttributes 了。
LAST :结尾的标示符。
List of Attributes
FtpAscii:“1”使用 ASCII模式处理 FTP操作;"0"使用二进制模式。
TargetFrame:当前链接或资源所在 Frame 的名称。除了 Frame 的名字,还可以指定下面
的参数:
_BLANK:打开一个空窗口。
_PARENT:把最新更改过的的 Frame 替换为它的上级。
_SELF:替换最新更改过的的 Frame。
_TOP:替换整个页面。
RecContentType:录制脚本时响应头的内容类型。例如 text/html、 application/x-
javascript 等。当没有设置 Resource 属性时,用它来确定目标 URL 是否是可记录的资源。
此属性包含主要的和次要的资源。最频繁使用的类型是 text、application、image。次要的
类型根据资源不同变化很多。例如:"RecContentType=text/html":表示 html 文本。
"RecContentType=application/msword":表示当前使用的是 Msword。
Referer: 当前页面关联的页面。如果已经显式指定了 url 的地址,此项可以省略。
Resource:指示 URL 是否属于资源。1 是;0 不是。设置了这个参数后,
RecContentType 参数被忽略。“Resource=1”,意味着当前操作与所在脚本的成功与否关
系不大。在下载资源时如果发生错误,是当作警告而不是错误来处理的;URL 是否被下载
受“Run-Time Setting—BrowserEmulation--Download non-HTML resources” 这个选项的
影响。此操作的响应信息是不做为 HTML 来解析的。“Resource=0”,表明此 URL 是重要
的,不受发送请求(RTS)的影响,在需要时也会解析它。
ResourceByteLimit:web 页面下载资源的极限大小。当达到设置的极限后,无法下载其他
资源。仅仅对需要下载的资源有效。
下载过程:如果总计下载大小小于极限值,则正常开始下载。如果当下载时达到了设置的
极限值,资源大小可知(在 HTTP响应头中指定了 Content-Length),这中情况下,如果
只需要一个缓冲区,那么下载可以正常完成。如果需要的不止一个缓冲区,或者资源大小
不可知,下载就会中断同时关闭当前连接。
这个特性可以用来模拟用户不等待一个页面下载完成时导航到另一个页面的情况。
ResourceByteLimit 在 HTTP模式中无法使用,在 Concurrent Groups(Vuser 脚本中的一
个区,此区中的所有函数并发执行)区中也无法使用。仅仅适用于 Sockets 的回放,
WinInet 也是不适用的。
Snapshot:快照的文件名,关联时使用。
Mode:两种录制级别 HTML、HTTP。
HTML 级别:在当前 Web 界面上录制直观的 HTML 动作。以一步步的 web_url、web_link、
web_image、web_submit_form来录制这些动作。VuGen 仅仅录制返回 HTML 页面的请
求,不处理脚本和应用程序。
HTTP级别:VuGen 把所有的请求录制为 web_url 指令,不生成 web_link、web_image、
web_submit_form这些函数。这种方法更为灵活,但是生成的脚本不够直观。
ExtraResBaseDir(目前仅适用与 web_custom_request 函数):根 URL,放在
EXTRARES 组里。它是用来解析相对 URL 的(译者加:类似于 Windows 的相对路径和
绝对路径)。
URL 可以是绝对路径(例如
http://weather.abc.com/weather/forecast.jsp?locCode=LFPO),也可以是相对路径(例
如“forecast.jsp?locCode=LFPO”)。
真正的 URL 的下载是通过绝对路径进行的,所以相对 URL 路径必须使用根路径 URL 去解
析。例如,使用 http://weather.abc.com/weather/做为根路径来解析
“forecast.jsp?locCode=LFPO”,最后的 URL 是:
http://weather.abc.com/weather/forecast.jsp?locCode=LFPO。如果没有指定
“ExtraResBaseDir”,默认的根 URL 是主页面的 URL。
Body(目前仅适用与 web_custom_request 函数):请求体。不同的应用中,请求体分别
通过 Body、BodyBinary 或者 BodyUnicode 参数来传递。请求体可以只使用其中一个参数,
也可以使用一连串的分开的参数组成多请求体。例如:
web_custom_request(
……
"BodyUnicode=REPRICE"
"BodyBinary=\\x08\\x00\\xCC\\x02\\x00\\x00"
"Body=.\r\n"
"-dxjjtbw/(.tp?eg:ch/6--\r\n",
LAST);
在上面的代码中,使用了 3 个参数来划分请求体,一个是 Unicode 段,一个是二进制段,
最后一个是常规的字符串。最终的请求体是这 3 个参数按照在函数中的顺序连接起来的值。
还有一个很少用到的参数,Binary。它也能描述二进制请求体,但只允许函数中只有一个
请求体参数。
所有的请求体都是 ASCII字符,以 null 结束。
Body:表示规则的,可打印的字符串。无法表示空字节。所有的字符都以一个反斜杠表示。
注意:在旧的脚本中,可以看见不可打印的字符在请求体中以 16 进制方式进行编码。(例
如 “\\x5c”),在这种情况下,必须使用“Binary=1”来标识。空字节使用"\\00"来表示。相反,
新脚本则会把把请求体分开放在不同的参数中("Body=...","BodyBinary=...", Body=...")。
BodyBinary :表示二进制代码。不可打印的字符在请求体中以 16 进制方式\\xHH进行编
码。在这里 HH表示十六进制值。空字节使用"\\00"来表示。
BodyUnicode:美国英语,特指拉丁 UTF-16LE(little-endian)编码。这种编码方式会在
在每个字符末尾附加一个 0 字节,以便使字符更可读。但是在 VuGen 中实际的参数把所
有的 0 字节都去掉的。但是在发送给 Web 服务器之前, web_custom_request 函数会重新
添加 0 字节的。对于不可打印的字符,使用单反斜杠表示,无法表示空字节。
注意:如果请求体大于 100K,会使用一个变量来代替 Body 参数。变量是在
lrw_custom_body.h 中定义的。
Raw Body(目前仅适用与 web_custom_request 函数):请求体是作为指针传递的,此指
针指向一串数据。二进制的请求体可以使用 BodyBinary 属性来发送(或者使用 Body 属性
来传递,前提是必须设置"Binary=1" )。无论如何,这种方法需要使用转义字符反斜杠把不可
打印的字符转换为 ASCII字符。为了能有一种更简便的表现原始数据的方式,Raw Body
属性应运而生,可以传递指向二进制数据的指针。
使用 4 个连续的参数集来表示指针,而且必须按照顺序排列:
RAW_BODY_START
指向数据缓冲区的指针
(int)长度
RAW_BODY_END
例子:
char *abc= .../* a pointer to the raw data */
web_custom_request("StepName",
"URL=http://some.url ",
"Method=POST",
RAW_BODY_START,
"abc",
3,
RAW_BODY_END,
LAST);
在应用中,即使设置了数据的长度为 0,指针也必须有值,不能为空。
在“Binary=1”时,不能使用上面的语法传递原始数据。
数据缓冲区中的数据不能使用参数化。也就时说,缓冲区中的任何参数(例如 "{MyParam}")
不能被正确的替代为相应的值,只会以字面值发送。
List of Resource Attributes
Web 页面中的非 HTML 机制产生了资源列表,包含了 Javascript, ActiveX, Java applets
andFlash 所请求的资源。VuGen's 的 Recording 选项中,可以设置把这些资源录制在当前
的操作中(默认是此设置)还是作为单独的步骤来录制。
支持以下资源:
URL
要加载的 web 资源的 url。
Referer
关联的 url。
ENDITEM
每个资源的结束标记
相对于把每个资源都录制为单独的步骤来说,不录制非 HTML 元素使脚本更加简短和可读,
特别是在 VuGen 的 Tree 视图下更为突出。
当 VuGen 录制过程中发现附加的资源(比如 JS)时,会以列表的形式加到附加资源项中。
回放脚本时,这些资源文件也是请求的一部分。可以对一些按规则变化的资源使用关联。
LoadRunner 函数中文翻译系列之二—Check
web_find
语法:
int web_find(const char *StepName, <Attributes and Specifications list>,
char*searchstring, LAST );
参数:
1、StepName:步骤名称,在 Tree 视图中出现。
2、Attributes andSpecifications list:
支持的属性有:
Frame:在多 Frame 的情况下,定义要查找 Frame 的范围。
Expect:定义在什么情况下函数检查成功:找到了指定的搜索标准或者没有找到。例如说,
可以检查指定的错误信息是否出现在 web 页面中。合法的值有 2 个:found 和 notfound。
默认值是“found”。
Matchcase:指定搜索是否区分大小写。
Repeat:指定当第一次发现要查找的字符串时,搜索是否继续。当一个 web 页面中包含多
个被查找的字符串时,此参数是非常有用的。合法的值有 2 个:yes,no。默认值是“yes”。
Report:指定在什么情况下,VuGen 在执行日志中显示此函数的检查结果。合法的值有:
success,failure,always。默认值是“always”。
Onfailure:此参数决定在函数检查失败后,Vuser 是否中断。参数值是 abort。如果指定了
Onfailure=abort,当函数检查失败时,不论在运行时设置中的 error-handling 是什么,脚本
都会中断。
如果没有指定 Onfailure=abort,那么运行时设置中 error-handling 将会起作用。
支持的特性有:RightOf, LeftOf(不支持 7.x及更高版本)。
RightOf:要查找的字符串右边的内容。
LeftOf:要查找的字符串左边的内容。
3、Searchstring:需要查找的字符串,格式为“What=stringxyz”。此搜索不区分大小写。
4、LAST:属性列表结束符。
返回值
整型。成功时返回 LR_PASS(0),失败时返回 LR_FAIL (1)。
说明
此函数的作用是在 HTML 页面中查找指定的字符串。
此函数只能在基于 HTML 录制的脚本中使用。当指定的 HTML 请求全部完成以后,开始执
行搜索过程,比 web_reg_find 要慢。
web_find 函数在 C 语言的脚本中已经被 web_reg_find 所替代,web_reg_find 运行速度比
较快,而且在 HTML-based 和 URL-based 的录制方式中都可以使用。在 C 语言脚本中,
web_find 是向后兼容的。Java 和 Visual Basic 脚本中不再支持它。
运行在 HTTP模式下的 WAP用户都和运行在 WSP回放模式下的 WAP用户都不支持此函
数。
web_global_verification
语法:
intweb_global_verification (<List of Attributes>, LAST ) ;
参数:
List of Attributes:
1、Text:此属性是一个非空的,以 NULL 结尾的字符串,表示要查找的内容。语法
是”Text=string”。还可以使用 text flags 自定义字符串。
2、TextPfx:没有指定 Text 的情况下使用此属性。要查找的字符串的前缀。语法是”
TextPfx =string”。还可以使用 text flags 自定义字符串。
3、TextSfx:没有指定 Text 的情况下使用此属性。要查找的字符串的后缀。语法是”
TextSfx =string”。还可以使用 text flags 自定义字符串。
4、Search:可选项,在哪里查找字符串。可选的值是:Headers,Body,
NORESOURCE 或 All。默认值是 NORESOURCE。语法是“Search=value”。
5、Fail:当字符串找不到时的处理选项:Found(默认值)或 NotFound。Found 表示当
找到对应的字符串时发生了错误(例如“Error”)。NotFound 表示当找不到字符串时发生了
错误。语法是“Fail=value“。
6、ID:在日志文件中标识当前函数。
LAST:属性列表结束符。
注:text flags:/IC 表示忽略大小写;/BIN表示指定的是二进制数据。
返回值
整型。成功时返回 LR_PASS(0),失败时返回 LR_FAIL (1)。
说明
web_global_verification 属于注册函数,注册一个在 web 页面中搜索文本字符串的请求,
与 web_reg_find 只在下一个 Action 函数中执行搜索不同的是,它是在之后所有的 Action
类函数中执行搜索的。可以搜索页面的 body,headers,html 代码或者是整个页面。
在检测一些应用程序级别(不通过 http 状态码来表现)的错误时,web_global_verification
是非常有用的。如果要定位通过 HTTP 状态码表现的错误时,使用 web_get_int_property。
查找范围:all:这个 HTML 页面;Headers:页面的头;body:页面的体,包含所有的资
源但不包含头;NORESOURCE(默认选项):仅仅包含页面的体,把包括头和资源。
如果不知道要查找的精确的文本,或者要查找的多个文本不是完全相同的,可以使用前缀和
后缀来表示。这时需要用到 TextPfx和 TextSfx属性。这 2 个属性必须同时指定,一旦指
定了其中一个,就不能指定 Text 属性了。
注意:web_global_verification在 WAP协议下不能运行。
web_image_check
语法:
intweb_image_check(const char *CheckName, <List of Attributes>,<"Alt=alt"||
"Src=src">, LAST );
参数:
1、CheckName:名称,在 Tree 视图中出现。
2、List of Attributes:
支持的属性有:Frame(在多 Frame 的情况下,定义要查找 Frame 的范围)。
支持的选项有:expect, matchcase,repeat, report, onfailure。
Tip:选项跟属性的区别,大部分选项都只允许设置预定义的值,其他的值都是无效的。
3、Alt:检查图象的 ALT 标记。不允许空值。
4、Src:检查图象的 SRC 标记。不允许空值。
5、LAST:参数列表结束的指示符。
返回值
整型。
说明
web_image_check 检查指定的图象是否在 HTML 页面中出现。
Alt 或者 Src 两者必须有一个在参数列表中出现。如果两项都通过,那么检查成功。
此函数仅仅支持基于 HTML 的脚本。
web_reg_add_cookie
语法:
intweb_reg_add_cookie(const char * cookie, const char * searchstring, LAST );
参数:
1、Cookie:定义需要增加或修改的 Cookie。
Cookie 的参数格式为:<name>=VALUE;(required);domain=DOMAIN_NAME;(required);
expires=DATE;path=PATH;(default path is"/");secure。
此参数中的 cookie 元素和 HTTP 响应头中的 Set-Cookie 是相同的。例如“Session=1234;
domain=sanditon.com”,在这里,“Session”是 cookie 的名称。
2、Searchstring:要查找的文本字符串。字符串不能为空,以 null 结尾。格式为
“Text=string”。
3、LAST:属性列表的结束符。
返回值
整型。成功时返回 LR_PASS(0),失败时返回 LR_FAIL (1)。
说明
web_reg_add_cookie 是注册类型的函数。它首先注册一个搜索文本字符串的请求。检查
动作在后续的 Action 函数之后进行。如果字符串被找到,就添加到 cookie 中。
需要注意,尽管 web_reg_add_cookie 在功能上跟 HTTP Set_Cookie 头相似,它们还是有
个明显的区别。根据 HTTP标准,domain 属性在 Set-Cookie 头中是可选的。如果没有指
定,默认的 domain 的值是产生 cookie 的服务器的 host name。当使用
web_reg_add_cookie 函数时,服务器的 hostname 对于压力测试的机器来说是不可用的,
所以 domain 属性是必选项。
此函数在 HTML-based 和 URL-based 的脚本中都可以使用。(参照录制选项的录制标签
页)。此函数是在服务器内容到达客户端之前注册搜索请求的,所以当所请求的内容一到
就会执行搜索操作,脚本会比较高性。
web_reg_add_cookie 是用户手动添加的,无法录制。
web_reg_find
语法:
int web_reg_find(const char *attribute_list, LAST);
参数:
1、attribute_list:
通过 Name=Value 对来传递参数。例如“Text=string”。Text,TextPfx,TextSfx三个必须
有一个出现。其他的属性是可选的。
a) Text:要搜索的字符串,字符串必须非空,以 NULL 结尾。可以使用 text flags 自定义
搜索字符串。
b) TextPfx:要搜索的字符串的直接前缀。
c) TextSfx:要搜索的字符串的直接后缀。
d) Search:搜索的范围。可选的值是:Headers、Body(在请求体中搜索)、
Noresource (仅仅在 HTML 请求体中搜索,不包括头和资源)、ALL(在请求体、头和资源
中搜索),默认值是“BODY”。
e) SaveCount:匹配的个数。
f) Fail:设置函数检查在什么状态下失败。
g) ID:日志文件中标识此函数的一个字符串。
h) RelFrameId:相关联的 FrameId。注意:此参数在 GUI级别的脚本中不受支持。
2、LAST:属性列表结束的标记符。
返回值
整型。成功时返回 LR_PASS(0),失败时返回 LR_FAIL (1)。
说明
web_reg_find 属于注册函数,注册一个在 web 页面中搜索文本字符串的请求,在接下来的
Action(象 web_url)类函数中执行搜索。
通过查找期望的字符是否存在来验证是否返回了期望的页面。例如,通过查找“Welcome”
来检查主页是否完全打开了。也可以查找“Error”检查浏览器是否发生错误。还可以使用此
函数注册一个请求来统计特定字符串出现的次数。
如果检查失败,在接下来的 Action 类的函数中会报告错误。此函数仅仅注册请求,并不执
行。函数的返回值只表明注册是否成功,并不表示检查的结果。
此函数不仅能够查找 text,还能查找到围绕着 text 的 strings。不要同时指定 text 和前缀后
缀。
Fail,处理选项,可以是“Found 或“NotFound”。默认是“NotFound”。
“Fail=Found” 指示当对应的字符找到时,函数检查失败。例如,查找单词“Error”,如果找
到了,说名 web 请求没有成功,你想把函数检查设置为失败。
“Fail=NotFound”指示当对应的字符找不到时,函数检查失败。如果查找的是 web 请求成
功时出现的字符串时,需要使用 NotFound。
SaveCount 参数指示保存到参数中的匹配的字符串的个数。使用这个属性,需要指定
“SaveCount=param”。检查操作被执行后,param的值是 null 结尾的数字类型的值。
如果指定了 SaveCount,且没有使用 Fail 参数,检查不会失败,无论需要查找的字符串是
否找到。通过检查 SaveCount 的值确定字符串是否被找到。如果param是 0,说明没有找
到对应的字符串。
如果同时指定了 SaveCount和 Fail,指定的错误处理选项和 SaveCount 协同工作。
handling optionspecified works together with the SaveCount. Thus,如果指定了
SaveCount 且指定了“Fail=NotFound”,但是字符串被找到,SaveCount 被赋值为字符串
出现的次数,检查成功。如果字符串找不到,SaveCount 被赋值为 0,检查失败(注意,
参数的 0 值只在运行时设置中 Continue on error 选中时才有意义)。
此函数在 HTML-based 和 URL-based 的脚本中都可以使用。此函数是在所请求内容到达
之前注册搜索请求的,所以当所请求内容一到达后就会执行搜索,产生的脚本比较高效。
LoadRunner 函数中文翻译系列之三--Concurrent Group
web_concurrent_start
语法:
intweb_concurrent_start ( [char * ConcurrentGroupName,] NULL );
参数:
ConcurrentGroupName:可选的,并发组的标识符。
NULL:参数列表结束的标记符。
返回值
整型。返回 LR_PASS (0)表示成功,返回 LR_FAIL (1)表示失败。
说明
web_concurrent_start 函数是并发组开始的标记。组中所有的函数是并发执行的。并发组
的结束 web_concurrent_end 函数。在并发组中,可以包含的函数有:web_url、
web_submit_data、web_custom_request、web_create_html_param、
web_create_html_param_ex、web_reg_save_param、web_add_header。
在并发组中的函数不是立即执行的。在并发组开始时,所有的函数首先被记录下来,当并
发组结束时,所有的函数并发执行。
所有的 Web 用户,HTTP模式下的 WAP用户持本函数。运行在 Wireless
SessionProtocol(WSP)回放模式下的 WAP虚拟用户,不支持本函数。
web_concurrent_start
语法:
intweb_concurrent_end ( reserved );
参数:
reserved:保留的供扩展的字段。
返回值
整型。返回 LR_PASS (0)表示成功,返回 LR_FAIL (1)表示失败。
说明
web_concurrent_end,并发组结束的标记。脚本执行时,碰到 web_concurrent_end 函数
时,开始并发执行所有记录的函数。
在并发组中的函数不是立即执行的。在并发组开始时,所有的函数首先被记录下来,当并
发组结束时,所有的函数并发执行。
可以并发执行的函数的个数是有限制的,使用运行时设置-Netword 标签页的 Concurrent
Connection 来设置。