loadrunner Web_类函数之Web_submit_form()

来源:互联网 发布:模拟人生4打不开mac 编辑:程序博客网 时间:2024/06/11 03:09

Web_submit_form()

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

首先,从工具的角度来说,厂商推荐使用Web_submit_form函数,因为这个函数看起来更易用,需要关注的东西较少。但是,从个人的角度来说,我推荐使用Web_submit_data函数,因为这个函数提供更多技术细节,在测试的过程中可控性更高。下面我就详细解释一下两个函数的工作机制:

首先看一下下面这段HTML代码

<FormAction=login.asp Method=“POST”>

<inputname=user value=“”>

<inputname=password value=“”>

<inputtype=hidden name=sessionID value=15379>

</Form>

在录制的过程中,当打开这个页面的时候,这个页面会放在LR的Cache中,之后当我们输入了用户名、口令之后,点了一下提交。Browser会向LR Record Proxy发送一个提交请求,提交内容应该是这样的:

POSTlogin.asp HTTP/1.1

user=stevepassword=buba

sessionID=15379

这时候,LR会自动比较提交的内容和Cache的内容,首先它会比较提交的数据项和Cache中的数据项是否一致。页面中有三个输入域user、password、sessionID,而提交的内容也有这三项数据,所以它认为提交数据使用了Cache中的页面,之后它会继续比较具体数据的值,它会发现sessionID的值和Cache中的值是一样的,但是user和password的值不一样。

这时候,Web_submit_form和Web_submit_data的区别就出现了:

web_submit_form(”start",

ITEMDATA,

"name=user","value=steve", ENDITEM,

"name=password","value=bean", ENDITEM,

LAST);

 

web_submit_data(”start",

“Action=login.asp”,

“Method=POST”

ITEMDATA,

"name=user","value=steve", ENDITEM,

"name=password","value=bean", ENDITEM,

"name=sessionID","value=15379", ENDITEM,

LAST);

可以看到,Web_submit_form只提供了和Cache中有差别的数据,其余的数据会自动从Cache中取。而Web_submit_data则提供了所有的数据,不管Cache存在不存在Web_submit_data都是可以工作的。

所以厂商会推荐使用Web_submit_form,因为它看起来更易用,甚至关联都不需要作,就能直接回放。但是这种情况只能对于简单系统适用。对于一些银行或者移动的复杂系统来说,有时侯会对Cache作特殊操作,Web_submit_form有时侯就会报一些莫名其妙的错出来。而Web_submit_data则跟Cache内容无关。稳定性和可控性都要比Web_submit_form要高很多。所以个人推荐尽量使用Web_submit_data函数。

web_submit_form()

提交表单。

intweb_submit_form(const char* StepName,<属性列表>,<隐藏字段列表>,ITEMDATA,<数据字段列表>,[EXTRARES,<资源属性列表>],LAST)

 

参数说明:

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

StepName:表单的名称,在图形脚本中显示。也用作自动事务的事务名称。

List of Attributes :请参见本节中的以下内容:属性列表。

List of Hidden Fields :隐藏字段列表请参见本节中的以下内容:隐藏字段列表。

ITEMDATA:在表单的属性和数据之间分隔的标记。此标记不用于Java语言调用。

List of Data Fields:请参见本节中的以下内容:数据字段列表。

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

Listof Resource Attributes:资源属性列表

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

 

一般信息 :

web_submit_form函数是提交表单的操作函数。 web_submit_form函数可以仅在先前操作的上下文中执行。

仅当VuGen处于基于HTML的录制模式(请参阅VuGen的录制选项)时,才会记录web_submit_form。

非HTML生成的资源的示例是.gif和.jpg图像。仅当这些资源的记录选项设置为“当前脚本步骤中的记录”时,才会插入资源属性列表。这是默认设置。请参阅“HP LoadRunner虚拟用户生成器用户指南”。

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

Change:

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

To:

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

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

(然后运行开始>程序> LoadRunner>工具>密码编码器。将该值粘贴到密码字段中,然后单击生成。加密字符串显示在“编码字符串”框中。单击复制按钮,然后将加密的字符串粘贴到脚本中,覆盖记录的值。)

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

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

此功能支持Web脚本,但不支持WAP脚本。

 

List of Attributes(属性列表)

支持以下属性:Action,Frame,TargetFrame,ResourceByteLimit,UserAgent和Ordinal。

记录的属性:VuGen总是尝试通过仅记录数据字段来唯一地标识每个表单。如果这不足以进行唯一标识,则VuGen记录Action属性。如果这仍然不足以进行唯一标识,VuGen将记录Ordinal属性,而不是Action属性。

在对lrapi.web.submit_form的Java语言调用中,属性列表是options []数组的一部分。

 

List of Hidden Fields(隐藏字段列表)

作为属性。您可以使用隐藏字段的列表来标识表单。

隐藏字段的列表具有以下格式:

STARTHIDDENS,

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

    “name = n2”,“value = v2”,ENDITEM,

    “NAMEPFX = pre1_”,“NAMESFX= _sfx1”,“value = v3”,ENDITEM,

    “NAMEPFX = pre2_”,“NAMESFX= _sfx2”,“value = v4”,ENDITEM,

ENDHIDDENS,

隐藏字段列表是可选的。

在对lrapi.web.submit_form的Java语言调用中,隐藏字段的列表是options []数组的一部分。

 

List of Data Fields(数据字段列表)

数据项标识表单。表单由数据项和属性标识。

数据字段列表具有以下格式:

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

“name = n2”,“value = v2”,ENDITEM,

在对lrapi.web.submit_form的Java语言调用中,数据字段列表是data []数组的一部分。

List of Extra Resources(额外资源列表)

在Java语言调用lrapi.web.submit_form中,额外资源的列表是data []数组的一部分。

 

Changing the header

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

 

示例:web_submit_form

实施例1

在以下示例中,web_submit_form函数的名称为“employee.exe”。该函数提交有关员工John Green的信息的请求。该函数没有属性,因为表单由项目数据唯一标识。

 

web_submit_form(“employee.exe”,

    ITEMDATA,

    “name = persons”,“value= John Green - John”,ENDITEM,

     “name = go_page”,“value = Go to Page”,ENDITEM,

    LAST);

 

实施例2

在以下示例中,用户在公司的库中提交了搜索,对于Garfinkel的书“实用UNIX安全”。

web_url(“dogbert”,“URL = http:// dogbert /”,LAST);

web_link(“Departments:”,“Text =Departments:”,LAST);

web_url(“index.html”,“URL =http://dogbert/groups/library/index.html”,LAST);

web_link(“Book Search:”,“Text =Book Search:”,LAST);

web_submit_form(“db2net.exe”,

    ITEMDATA,

    “name = library.TITLE”,“value = Practical UNIX Security”,ENDITEM,

    “name = library.AUTHOR_S_”,“value = Garfinkel”,ENDITEM,

    “name = library.SUBJECTS”,“value =”,ENDITEM,

LAST);