WebLoad 对于模拟一个HTTP 请求,一般都是 由以下三部分组成,并把这三部分包在一个Transaction里(从BeginTransation 到 EndTransaction 为止):
 
1. request header or cookie
a) request header, 即发送HTTP请求时所附带的头部,一般Post请求需要头部为多,由以下方法构成
wlHttp.Header["key"] = "value"
例子,RPS2 项目的请求都需要添加一个 特殊头部 "When calling RPS2, for each call, you must also include a http header with x-product-code:retail_phoenix", 所以这个请求头部的是:
wlHttp.Header["x-product-code"] = "retail_phoenix"
b) cookie,有时候发送HTTP 请求需要包含一个登陆或者是用户信息的cookie,而当带有cookie的请求时WL 不能录制,需要自己手动添加代码, 添加cookie的方法是wlCookie.Set(name, value, domain, path [, expire])
例子,RPS 需要的请求需要包含一个 mstar=V63LP207K0564O7267263N3512P365O6KOL18OL2L034KL02820 的cookie,则调用cookie的方法是:
wlCookie.Set("mstar", "V63LP207K0564O7267263N3512P365O6KOL18OL2L034KL02820", "http://scdispqaweb.morningstar.com","/", ""), 
其中cookie可以放在一个txt的文件中,然后参数化,则有
wlCookie.Set("mstar", dataMap_cookie.getValue(), "http://scdispqaweb.morningstar.com","/", "")
 
Note: 曾经犯过一个错,就是把cookie放在request header里,即使用wlHttp.Header["cookie"] = "mstar=...."
 
2. request content ( and content type )
发送HTTP 请求,特别是Post请求,一般都要发送一些请求内容或者提交一些表单。WL 提供三种提交表单或发送请求体的方法
a). FormData
     FormData 属于wlHttp对象的属性,使用的格式可以有两种,wlHttp.FormData["key"] = "value" or wlHttp.FormData.key = "value"
例子,wlHttp.FormData["Login"] = "tom.weng@morningstar.com"
         wlHttp.FormData["Password"] = "Mstar123" 
or
            wlHttp.FormData.Login = "tom.weng@morningstar.com"
            wlHttp.FormData.Password = "Mstar123"
 
Note: the difference is that The wlHttp.FormData["key"] notation also supports spaces in the name, 
for example, wlHttp.FormData["First Name"].
 
b). Data
    This method is used to submit a string that is not a standard HTML form and cannot be represented by       
    FormData. It has two subfields:
Data.Type – The MIME type for the submission
Data.Value – The string to submit
和 FormData 一样,它也可以有两种表达方式: 
wlHttp.Data.Type = "value";
wlHttp.Data.Value = "value";  
或者
wlHttp.Data["Type"] = "value"
wlHttp.Data["Value"] = "value"
 
例子:wlHttp.Data.Type = "application/x-www-form-urlencoded"
wlHttp.Data.Value = "email=pms.advisor9@morningstar.com&strPassword=Mstar123&Login=1&rbtn=btnEmail&rnd=(new Random()).NextDouble().ToString()&ProductCode=AWSOE&ProductID=AWSOE"
或者
wlHttp.Data["Type"] = "application/json; charset=UTF-8"
wlHttp.Data["Value"] = "{\"Name\": \"tom weng\", \"Number\": 1024, \"Title\": \"QA Engineer\" }"
 
注意: 当用Data 方面时,Value 属性是必须的,即必须有 Data["Value"] 或 Data.Value
 
c). DataFile
DataFile 的作用主要是: 当Post 请求的 请求体内容太大的话,为方便脚本的维护,把请求内容放到一个外部文件中,然后通过DataFile 这个方法导入外部文件。而不需把整一大段Post请求内容放到脚本里。
同样的,DataFile也支持两种表达方式:
wlHttp.DataFile.Type = "value"; 
wlHttp.DataFile.Filename = "value"
or
wlHttp.DataFile["Type"] = "value";      wlHttp.DataFile["Filename"] = "value"
 
例子:
wlHttp.Header["X-API-UserId"] = "d5b04f19-e16b-4963-a6c1-faac4624fb48"
wlHttp.Header["X-API-ProductId"] = "Direct"
//wlHttp.DataFile.Type = "application/json; charset=UTF-8"
//wlHttp.DataFile.Filename = "D:\\Load Test\\Tom\\DataFileTest\\datafile.txt"
wlHttp.DataFile["Type"] = "application/json; charset=UTF-8"
wlHttp.DataFile["Filename"] = "D:\\Load Test\\Tom\\DataFileTest\\datafile.txt"
wlHttp.Post("http://api-data-stg.morningstar.com/v2/lists")
 
上面的例子,我把Post的请求内容(Json格式)放到了一个叫 datafile 的 txt 文件里,然后通过 wlHttp.DataFile.Filename 这个方法把该文件引进来。
 
ContentType:
Description : Specifies the content type of the HTTP request.
Note: content type 可做作为 request header field, 也可以作为wlHttp的属性单独来使用
wlHttp.Header["Content-type"] = "application/x-amf" 
wlHttp.ContentType = "application/x-www-form-urlencoded"
 
3. request 
一般HTTP 请求为:Get,Post,Put, Delete.... WL 相应提供了这几种方法,也是属于wlHttp 对象
wlHttp.Get("URL");
wlHttp.Post("URL");
wlHttp.Put("URL");
wlHttp.Delete("URL")
例子:
wlHttp.Get("http://www.baidu.com")
wlHttp.Post("http://mcsvqaap-cloud.morningstar.com/DataService/api/v2/entity/columnsets")
wlHttp.Put("http://api-data-stg.morningstar.com/v2/columnSets/" + IDMap_ColumnSet_ID.getValue())
wlHttp.Delete("http://api-data-stg.morningstar.com/v2/columnSets/" + corr_Morningstar_columnsetID_3)
 
validation
最后是验证

WebLoad 脚本的用法的更多相关文章

  1. Shell脚本exit用法与区别

    在Shell脚本中,往往会遇到一些判断类型为某个值不符合预期值的时候就退出主脚本/当前脚本/当前函数,那么Exit与return的用法与区别是什么呢? 下面先使用Exit举个简单例子,脚本内容如下 # ...

  2. shell脚本基本用法

    下面是一些简单常用的脚本,工作中可能会用到,记录一下. #!/usr/bin/env bash #变量[=两边不要有空格], 在使用的时候需要用${变量名} 或者是$变量名 name="sa ...

  3. 一个WebLoad 脚本范例

    //initial the Agenda function InitAgenda(){     wlGlobals.SaveHeaders = true;     wlGlobals.SaveSour ...

  4. php类似shell脚本的用法

    参考: http://www.cnblogs.com/myjavawork/articles/1869205.html php还可以用于类似于shell脚本,哈哈,对编程语言和对整个计算机系统的认识又 ...

  5. expect脚本语言用法示例

    #!/usr/bin/expect set hostname [lindex $argv 0] set username [lindex $argv 1] set passwd [lindex $ar ...

  6. SQL约束脚本的用法

    1.主键约束:要对一个列加主键约束的话,这列就必须要满足的条件就是分空因为主键约束:就是对一个列进行了约束,约束为(非空.不重复)以下是代码   要对一个列加主键,列名为id,表名为emp 格式为:a ...

  7. paramiko远程控制host执行脚本的用法

    import paramiko ssh = paramiko.SSHClient() print ssh.get_host_keys() ssh.set_missing_host_key_policy ...

  8. Bash 脚本进阶,经典用法及其案例

    前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神.虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加 ...

  9. mysql+keepalived主从切换脚本 转

    Keepalived MySQL故障自动切换脚本   MySQL架构为master-slave(主从),master故障自动切换到slave上.当然也可以设置为双master,但这里有个弊端:就是当主 ...

随机推荐

  1. Frequency of String CodeForces - 963D

    http://codeforces.com/contest/963/problem/D 题解:https://www.cnblogs.com/Blue233333/p/8881614.html 记M为 ...

  2. jmeter(一)工具介绍(一)

    一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...

  3. vim快捷键参考

    一. 移动: h,j,k,l: 左,下,上,右. w: 下一个词的词首.W:下一个单词(不含标点). e:下一个词的词尾.E:不含标点. b:上一个词的词首.B:不含标点. <>: v 模 ...

  4. 手写一套迷你版HTTP服务器

    本文主要介绍如何通过netty来手写一套简单版的HTTP服务器,同时将关于netty的许多细小知识点进行了串联,用于巩固和提升对于netty框架的掌握程度. 服务器运行效果 服务器支持对静态文件css ...

  5. C#过时方法标记

    1.当遇到过时或废弃的方式 函数怎么办 [Obsolete]特性解决你的困惑 1.1:当方法已经完成相关兼容 可以保留时

  6. (Nginx+Apache)实现反向代理与负载均衡

    反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多台内部Web服务器之一上, ...

  7. mui 时间日期控件(浏览器上无法查看,在手机端可以点击)

    <head> <meta charset="utf-8"> <meta name="viewport" content=" ...

  8. 实现通知栏Notification

    课程Demo public class MainActivity extends Activity implements OnClickListener{ NotificationManager ma ...

  9. java synchronized(object/this)的 区别

    1.synchronized(object) package test.thread; import java.io.IOException; import org.junit.Test; /* * ...

  10. [Android]AndroidDesign中ActionBar探究2 嵌入Fragment

    上一节我们只是简单了介绍了Android Design风格中的ActionBar的简单实用,如添加MenuItem,这节我们会进一步了解ActionBar的其他功能. 在Android Develop ...