loadrunnerWeb_类函数之Web_submit_form()
Web_submit_form()
在LoadRunner中有两个常⽤函数:Web_submit_form和Web_submit_data,在群⾥有⼈问这两个函数有什么区别。为什么会有两个不同却功能相似的函数?区别在哪⾥?
⾸先,从⼯具的⾓度来说,⼚商推荐使⽤Web_submit_form函数,因为这个函数看起来更易⽤,需要关注的东西较少。但是,从个⼈的⾓度来说,我推荐使⽤Web_submit_data函数,因为这个函数提供更多技术细节,在测试的过程中可控性更⾼。下⾯我就详细解释⼀下两个函数的⼯作机制:
⾸先看⼀下下⾯这段HTML代码
<FormAction=login.asp Method=“POST”>
<inputname=ur value=“”>
<inputname=password value=“”>
<inputtype=hidden name=ssionID value=15379>
白术散</Form>
在录制的过程中,当打开这个页⾯的时候,这个页⾯会放在LR的Cache中,之后当我们输⼊了⽤户名、⼝令之后,点了⼀下提交。Browr会向LR Record Proxy发送⼀个提交请求,提交内容应该是这样的:
POSTlogin.asp HTTP/1.1
ur=stevepassword=buba
ssionID=15379
这时候,LR会⾃动⽐较提交的内容和Cache的内容,⾸先它会⽐较提交的数据项和Cache中的数据项是否⼀致。页⾯中有三个输⼊域ur、password、ssionID,⽽提交的内容也有这三项数据,所以它认为提交数据使⽤了Cache中的页⾯,之后它会继续⽐较具体数据的值,它会发现ssionID的值和Cache中的值是⼀样的,但是ur和password的值不⼀样。
这时候,Web_submit_form和Web_submit_data的区别就出现了:
web_submit_form(”start",
ITEMDATA,
"name=ur","value=steve", ENDITEM,
"name=password","value=bean", ENDITEM,
六一儿童节活动LAST);
web_submit_data(”start",
“Action=login.asp”,
“Method=POST”
ITEMDATA,
"name=ur","value=steve", ENDITEM,
"name=password","value=bean", ENDITEM,
"name=ssionID","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,UrAgent和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函数的名称为“”。该函数提交有关员⼯John Green的信息的请求。该函数没有属性,因为表单由项⽬数据唯⼀标识。
web_submit_form(“”,
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(“”,
ITEMDATA,
“name = library.TITLE”,“value = Practical UNIX Security”,ENDITEM,
“name = library.AUTHOR_S_”,“value = Garfinkel”,ENDITEM,
“name = library.SUBJECTS”,“value =”,ENDITEM,
LAST);