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. dubbo服务端响应超时错误一例记录

    错误描述: Portlet J2AppsPortlet::QuickStartPortlet not available: Waiting server-side response timeout. ...

  2. GC_CONCURRENT freed 循环不停打印日志

    打印类似如下语句: 03-07 19:21:49.562: D/dalvikvm(1677): GC_CONCURRENT freed 2859K, 20% free 12020K/15011K, p ...

  3. Android Dialogs(2)最好用DialogFragment创建Dialog

    Creating a Dialog Fragment You can accomplish a wide variety of dialog designs—including custom layo ...

  4. chromedriver与chrome版本对应

    今天把手头有的一些关于selenium测试的资源整理了一下,分享出来. 1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是 ...

  5. vue.js学习参考手册

    参考手册 示例:www.51siyuan.cn/161.html

  6. 关于C# DropDownList 动态加载数据笔记

    今天在处理一个导游注册的页面,其中需要填写地址以及该地址下所有旅行社,地址区级以上都是用下拉列表实现,具体地址街道等手动填写.在填写区县之后,该区县下的所有旅行社也需要动态加载. 后台代码 DataT ...

  7. for循环的两种写法哪个快

    结果如下: 其实工作中,也没有这么多数据需要遍历,基本上用foreach

  8. 使用过Fetch之后,你还想使用AJAX吗

    之前做数据交互的时候,请求数据一直使用ajax,看到网上有使用Fetch,所以也想拿来尝尝鲜 本次介绍只涉及fetch相关,传统的ajax基本上不涉及 当然你也要考虑兼容.浏览器支持情况. 一会这个只 ...

  9. Android下多彩的StatusView的实现

    概述 在上一个博文 Anroid沉浸式状态栏中提到了,画了一个图,这个图简单将我们的状态栏分为不同的2个维度来看状态栏.其中涉及的概念我不在赘诉,请返到Anroid沉浸式状态栏再去认识下这几个概念.本 ...

  10. 去除inline-block间距

    去除inline-block间距 通过display:inline-block设置元素为水平时,相邻元素之间会有几px的间距: html: <ul class="list"& ...