Loadrunner 脚本开发-利用web_submit_data函数实现POST请求
脚本开发-利用web_submit_data函数实现POST请求
by:授客 QQ:1033553122
概述
web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的GET方法,如果需要实现POST方法,可使用web_submit_form或web_submit_data()函数。当请求比较特别,VuGen无法使用以上4个函数时,便会采用web_custom_request()函数。
其中,web_submit_form 类似web_submit_data函数,不同的是web_submit_data() 函数无须引用页面支持,直接发送给对应页面相关数据即可。
函数原型(C)
int web_submit_data(const char *StepName, const char *Action, , ITEMDATA, , [ EXTRARES, ,] LAST );
StepName:自定义函数名称
Action:提交数据时需要访问的http地址。语法:"Action="
List of Attributes:支持以下属性
Method: 表单提交方法: POST 或 GET (默认: POST).
EncType: 方法使用的编码
Enctype属性指明了Content-Type请求头的value值,具体如下:
- "EncType=application/x–www–form–urlencoded"
- "EncType=multipart/form–data"
- "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”做为默认值。如果Method不是POST,那将不会生成Content-Type请求头。
EncodeAtSign: 编码"@"符号为其ASCII表示.可选值为 Yes 或 No.
TargetFrame: 包含当前链接、资源的frame
Referer: 所引用web页面的url
Mode: 录制级别:HTML 或 HTTP. Click here for more information.
UserAgent: 标识一个组件替代浏览器来执行函数,比如浏览器的ActiveX组件。函数将为该请求添加UserAgent头。不对该UserAgent是否匹配浏览器User-Agent运行时设置做任何确认检查。
ITEMDATA: 分隔属性列表和和数据列表的标识
List of Data:定义了表单数据。data域包含所有隐藏(携带hidden属性)的表单数据。
数据域。
数据域的值可以加密后的(encrypted)或者是原始的(plain),如下:
"name=n1", "value=v1", ENDITEM,
"name=n2", "EncryptedValue=qwerty", ENDITEM,
EXTRARES:表明接下来的参数为资源属性列表。
List of Resource Attributes: 资源属性列表
当录制在当前脚本的step中时,额外的资源被当作参数列出,支持以下资源属性:
URL 需要加载的web资源
Referer URL引用的web页面
ENDITEM 表示list中,每个资源结束的标记
非HTML资源,如.gif 和.jpg 图片,仅在资源录制选项设置为Record within the current script step时,才会插入到当前函数中,如下:
LAST 暗示属性列表结束。
action函数,执行"unconditional" or "contextless" 表单提交。允许发送GET 和 POST的HTML表单请求。
当选择以HTTP录制模式录制一个WEB会话时,会生成该函数。另外,当表单提交后,无法生成web_submit_form时,也会生成该函数。
例1:上传文件
web_submit_data("choujiang",
"Action=http://xxx.xxx.x.xx:xxx/ditui/fileupload",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=",
"Mode=HTML",
"EncType=multipart/form-data",
ITEMDATA,
"Name=MultiPart File","Value=E://test_pic.png", "File=yes", ENDITEM,
LAST);
运行结果:
对比工具测试结果:
例2:登陆
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"TargetFrame=body",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t3.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value=118025.184447145zAHAQcAptcfDztcfpfccff",
ENDITEM,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
"Name=login.x", "Value=58", ENDITEM,
"Name=login.y", "Value=2", ENDITEM,
LAST);
Loadrunner 脚本开发-利用web_submit_data函数实现POST请求的更多相关文章
- Loadrunner 脚本开发-利用web_custom_request函数进行接口测试
脚本开发-利用web_custom_request函数进行接口测试 by:授客 QQ:1033553122 一.POST + JSON格式参数 例: web_custom_request(" ...
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
- Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
脚本开发-利用Loadrunner生成Web service测试脚本 1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“ ...
- LoadRunner 脚本开发和常用函数
开发性能测试脚本原则.简单 正确 高效 在lr中,脚本运行是解释执行的.所以在运行时,需要先编译. 局部变量和全局变量 1.在init.action.end中定义的变量就是局部变量 2.在global ...
- loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
转自:http://blog.sina.com.cn/s/blog_13cc013b50102v49c.html(查看原文) 在VuGen中默认使用{}的字符串称为参数 注意:参数必须在双引号中才能用 ...
- Loadrunner脚本开发规范
Loadrunner脚本开发规范 目录 1.一般约定... 3 2.代码注释约定... 4 3.格式化代码... 5 1.一般约定 1.1具体脚本规则,必须在具体代码中加注释,以便脚本开发人员阅读和理 ...
- loadrunner 脚本开发-web_custom_request函数详细介绍
脚本开发-web_custom_request函数详细介绍 by:授客 QQ:1033553122 c语言版本: int web_custom_request(const char *RequestN ...
- Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试
脚本开发- soap_request函数介绍及WebService接口测试 by:授客 QQ:1033553122 函数介绍 soap_request 函数执行一个SOAP请求 函数原型 int so ...
- loadrunner 脚本开发- web_url函数详解
脚本开发- web_url函数详解 by:授客 QQ:1033553122 加载指定url的web页面(GET请求) C语言函数 int web_url( const char *StepName ...
随机推荐
- 原生js实现返回顶部特效
index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- 解决Database returned an invalid datetime value. Are time zone definitions for your database installed?
设定博客文章按照时间分层筛选出现问题 ret=Article.objects.filter(user=user).annotate(month=TruncMonth("create_time ...
- 【面试篇】寒冬求职季之你必须要懂的原生JS(中)
互联网寒冬之际,各大公司都缩减了HC,甚至是采取了“裁员”措施,在这样的大环境之下,想要获得一份更好的工作,必然需要付出更多的努力. 一年前,也许你搞清楚闭包,this,原型链,就能获得认可.但是现在 ...
- 分布式事务解决方案以及 .Net Core 下的实现(上)
数据一致性是构建业务系统需要考虑的重要问题 , 以往我们是依靠数据库来保证数据的一致性.但是在微服务架构以及分布式环境下实现数据一致性是一个很有挑战的的问题.最近在研究分布式事物,分布式的解决方案有很 ...
- leetcode — combination-sum-ii
import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** *Source : https://oj ...
- 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最 ...
- Tomcat8源码笔记(六)连接器Connector分析
根据 Tomcat8源码笔记(五)组件Container分析 前文分析,StandardService的初始化重心由 StandardEngine转移到了Connector的初始化,本篇记录下Conn ...
- #2 Python面向对象(一)
前言 对于萌新来说,面向对象,这是一个很陌生的词语.如果你接触过Linux,你一定知道“一切皆文件”,也就是说,在Linux中所有都是文件,鼠标是文件.键盘是文件.目录是文件等等一切都是文件:Pyth ...
- [转]nodeJS中redis初步使用
本文转自:https://blog.csdn.net/frankenjoy123/article/details/55209637 Node.js下使用Redis,首先: 1.有一台安装了Redis的 ...
- .NET里面 abstract class和Interface有什么区别以及用法的展现?
前言 很多新人对这个问题已经看到的厌倦或者是恶心了,有可能是因为比较难理解或者是未理解的情况下对它们的认知不够所以产生的想法是差不多,不用抽奖类和接口我一样能实现我想要的功能. 这句话确实不假,但是实 ...