Loadrunder脚本篇——web_submit_data实现提交post请求
概述
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);
Loadrunder脚本篇——web_submit_data实现提交post请求的更多相关文章
- Loadrunder脚本篇——web_custom_request函数介绍
c语言版本: int web_custom_request(const char *RequestName, , [EXTRARES, ,] LAST ); 参数说明: RequestName ...
- Loadrunder脚本篇——webservice接口测试(一)
函数介绍 soap_request 函数执行一个SOAP请求 函数原型 int soap_request( const char *StepName, ExpectedResponse, URL, , ...
- Loadrunder脚本篇——文件下载
下载简介 对 HTTP协议来说,无论是下载文件或者请求页面,对客户端来说,都只是发出一个GET请求,并不会记录点击后的“保存”.“另存为操作”. 如下,点击页面中tar.gz压缩包,用工具可以清楚的看 ...
- Loadrunder脚本篇——关联数组(参数数组)
导言 前面说过可以用关联取出服务器相关的一些动态变化的信息,前面也提过web_reg_save_param中可以设置ord=all,代表从服务器中取出的是一个数组,它试用的场景是当我访问一个发帖网站, ...
- Loadrunder脚本篇——Run-time Settings之Browser Enmulation
浏览器模拟 所有Internet Vuser Header包含一个标识将被模拟的浏览器类型(或无线工具包)的User Agent header.例如User-Agent: Mozilla/3.01Go ...
- Loadrunder脚本篇——Run-time Settings之Preferences
打开Preferences设置对话框,这里提供了对运行时的参数选择设置 Enable Image and Text Check 开启图片和文本检查.允许用户在回放期间通过web_find(文本检测)或 ...
- Loadrunder脚本篇——webservice接口测试(二)
1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“Import” ->弹出窗中选择“URL”,填写wsdl地址,导 ...
- loadrunder脚本篇——执行操作系统命令
思路: 用loadrunner system()函数 函数原型: int system( const char *string ); 示例一:在指定目录下创建指定文件 Action() { char ...
- loadrunder脚本篇——文件读写操作
函数说明 函数原型: size_t fwrite( const void *buffer, size_t size, size_t count, FILE *file_pointer ); 参数说明 ...
随机推荐
- error C2998: 'XXXXXXX' : cannot be a template definition 的可能原因。
从错误信息的字面意思可以看出来是 XXXXX 不能作为模板定义. 但是为什么不能,并没有说明,最后我翻阅各种资料,各种尝试后,发现往往可能是由于找不到模板函数的某个参数的定义而导致的. templat ...
- linux undefined reference to symbol 'floor@@GLIBC_2.2.5'
这个是因为GNU make版本不一致导致,最后加上-lm g++或者gcc -o main main.c -lm 如果还存在问题 需要加上-Wl,--no-as-needed g++或者gcc -W ...
- latex math
scalar -> lower case lettervector -> lower case bold lettermatrix -> upper case bold letter
- 模拟 Ajax 上传
----------------view----------------------------------- <form method="post" action=&quo ...
- 我的第三个java程序 两数相加
import java.util.Scanner; public class Test { public static void main(String [] args) { Scanner sc = ...
- Eclipse 添加书签
Eclipse 添加书签 关于书签 Eclipse 中可以在编辑器的任意一行添加书签. 您可以使用书签作为提示信息,或者使用书签快速定位到文件中的指定的行. 添加书签 如果你想设置书签,你只需要在垂直 ...
- 用于ARM上的FFT与IFFT源代码-C语言
/********************************************************************************* 程序名称:快速傅里叶变换(FFT) ...
- python 自动化之路 day 19 Django基础[二]
Django - 路由系统 url.py - 视图函数 views.py - 数据库操作 models.py - 模板引擎渲染 - HttpReponse(字符串) - render(request, ...
- HDU 2571 命运 (简单DP)
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- go反射----3方法
声明:文章内容取自雨痕老师<Go语言学习笔记> 动态调用方法,谈不上有多麻烦.只需按IN列表准备好所需参数即可. package main import ( "fmt" ...