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. ACM_棋棋棋棋棋(规律题)

    棋棋棋棋棋 Time Limit: 2000/1000ms (Java/Others) Problem Description: 在遥远的K次元空间,一年一度的GDUFE-GAME又开始了.每年的GD ...

  2. Apusic中间件结合MyEclipse进行远程调试记录

    Apusic中间件结合MyEclipse进行远程调试记录. 在金蝶域中正常部署应用. 启动金蝶中间件时使用"startapusic -ds"命令. 在MyEclipse的Run-- ...

  3. 转 【TTS】AIX平台数据库迁移到Linux--基于RMAN(真实环境)

    [TTS]AIX平台数据库迁移到Linux--基于RMAN(真实环境) http://www.cnblogs.com/lhrbest/articles/5186933.html 各位技术爱好者,看完本 ...

  4. RabbitMQ四:生产者--队列--消费者

    AMQP协议的梳理和名词解析  建议先把上篇AMQP协议先看一遍,理解一下,由于用XMind绘图,电脑屏幕比较小,不能截取全部,如果想要全图和源代码,请下面留言....... 可以点击图片,打开到新的 ...

  5. vs2015如何添加webservice 的web服务引用

  6. hihocoder offer收割编程练习赛12 B 一面砖墙

    思路: 就是求哪个长度出现的次数最多. 实现: #include <iostream> #include <cstdio> #include <algorithm> ...

  7. 解决windows下rstudio安装playwith包报错问题

    一.playwith包简介 playwith包提供了一个GTK+图形用户界面(GUI),使得用户可以编辑R图形并与其交互.playwith()函数允许用户识别和标注点.查看一个观测所有的变量值.缩放和 ...

  8. BotFramework学习-02

    1.请求的Message格式 { "type": "Message", "id": "fd89606f8014453ca5587e ...

  9. day24-1 元类

    目录 元类 类的组成 内置函数 exec() class关键字创建类原理 自定义元类控制类的创建 自定义元类控制类实例化 自定义元类后对象属性查找顺序 元类 在python中一切皆对象,name我们用 ...

  10. DEALLOCATE - 删除一个准备好的查询

    SYNOPSIS DEALLOCATE [ PREPARE ] plan_name DESCRIPTION 描述 DEALLOCATE 用于删除前面准备好的查询. 如果你没有明确 DEALLOCATE ...