导言

  前面说过可以用关联取出服务器相关的一些动态变化的信息,前面也提过web_reg_save_param中可以设置ord=all,代表从服务器中取出的是一个数组,它试用的场景是当我访问一个发帖网站,有很多帖子,我们通过关联数组的方式获得本页所有帖子的id的一个数组,然后通过一个lr_paramarr_random函数随机取出这个数组的一个值,就模拟用户随机点击一个帖子,然后再把这个随机获取的值传到点击某一个帖子跳转页面的那个url里面,这样就完成了模拟用户随机点击帖子然后跳转到具体的帖子详情页,本篇将详细讲解通过脚本实现这个问题!

1.从服务器获取的关联数组

只要在关联函数中加入“ord=all”代表着取满足条件下的所有数据组成的数组。举例如下:

Action()
{
web_reg_save_param("id",
"LB=\"_id\":\"",
"RB=\"",
"Ord=ALL",
LAST);

web_custom_request("web_custom_request",
"URL=http://192.168.1.126:3000/apixxxxxxx",
"Method=GET",
"TargetFrame=",
"Resource=0",
"Referer=",
"Body=",
LAST);

return 0;
}

运行结果:

从上面的结果看到,我们命名的为id不是一个数组了,是一个数组,他满足以下两个条件:

1.参数必须都是以相同的名字开头,后面接下划线加数字的方式顺序赋值。

2.参数数组必须有一个“参数名_count”的参数来记录数组的长度

相关函数:

lr_paramarr_idx()     //获取参数数组中指定编号的参数的值

lr_paramarr_len()     //获取参数数组的长度

lr_paramarr_random()  //从参数列表中随机获取一个参数

2.将内容保存为参数数组

例子:要创建一个访问网站的参数数组,可以编写以下代码

说明:通过脚本创建了一个名为website的参数数组,并获取编号为2的参数的值,

运行结果:

此处:web_site = lr_paramarr_idx("website", 2),等同:lr_eval_string(“{website_2}”);

获取参数数组长度

例子:

Action2()

{

int array_size = 0;

char *arr_size_str = NULL;

lr_save_string("www.google.com", "website_1");

lr_save_string("www.google.com", "website_2");

lr_save_string("www.google.com", "website_3");

lr_save_string("www.google.com", "website_4");

lr_save_string("4", "website_count");

array_size = lr_paramarr_len("website");

//输出整数

//1.把结果array_size保存为参数

lr_save_int(array_size, "arr_size");

//2.获取参数的字符串表示

arr_size_str = lr_eval_string("{arr_size}");

//输出结果

lr_output_message(arr_size_str);

return 0;

}

运行结果:

从参数列表中随机获取一个参数

例子:

Action2()

{

char *web_site = NULL;

lr_save_string("www.google.com", "website_1");

lr_save_string("www.google.com", "website_2");

lr_save_string("www.google.com", "website_3");

lr_save_string("www.google.com", "website_4");

lr_save_string("4", "website_count");

web_site = lr_paramarr_random("website");

return 0;

}

运行结果:

例子:按顺序输出每个参数

Action2()

{

int i = 0;

lr_save_string("www.google.com", "website_1");

lr_save_string("www.google.com", "website_2");

lr_save_string("www.google.com", "website_3");

lr_save_string("www.google.com", "website_4");

lr_save_string("4", "website_count");

for (i=0; i<4;i++)

{

lr_output_message(lr_paramarr_idx("website", i));

}

return 0;

}

输出结果

 

用指针变量存放参数

Action2()

{

char *pt = NULL;

lr_save_string("hello world", "param");

pt = "{param}";

lr_output_message(pt);

lr_output_message(lr_eval_string(pt));

return 0;

}

运行结果:

3.实战中的运用

举例:

Action()
{
web_reg_save_param("id",
"LB=\"_id\":\"",
"RB=\"",
"Ord=ALL",
LAST);

web_custom_request("web_custom_request",
"URL=http://192.168.1.126:3000/apixxxxxxx",
"Method=GET",
"TargetFrame=",
"Resource=0",
"Referer=",
"Body=",
LAST);

lr_save_string(lr_paramarr_random("id"),"RamId");

web_custom_request("web_custom_request",
"URL=http://1xxxxxxx/detail?_id={RamId} ",
"Method=GET",
"TargetFrame=",
"Resource=0",
"Referer=",
"Body=",
LAST);

return 0;
}

运行结果:

Loadrunder脚本篇——关联数组(参数数组)的更多相关文章

  1. Loadrunder之脚本篇——关联

    关联的原理 关联也属于一钟特殊的参数化.一般参数化的参数来源于一个文件.一个定义的table.通过sql写的一个结果集等,但关联所获得的参数是服务器响应请求所返回的一个符合条件的.动态的值. 例子:常 ...

  2. Loadrunder脚本篇——Running Time setting之Additional attributes

    作用说明 为Vuser脚本提供额外自定义参数.额外参数设置可应用于所有Vuser脚本类型. 说明: Add:添加一个参数 Remove:移除一个参数 可以在这里先输入一些常用的参数名及对应的值,类似常 ...

  3. Loadrunder脚本篇——文件下载

    下载简介 对 HTTP协议来说,无论是下载文件或者请求页面,对客户端来说,都只是发出一个GET请求,并不会记录点击后的“保存”.“另存为操作”. 如下,点击页面中tar.gz压缩包,用工具可以清楚的看 ...

  4. Loadrunder脚本篇——Run-time Settings之Browser Enmulation

    浏览器模拟 所有Internet Vuser Header包含一个标识将被模拟的浏览器类型(或无线工具包)的User Agent header.例如User-Agent: Mozilla/3.01Go ...

  5. Loadrunder脚本篇——Run-time Settings之Preferences

    打开Preferences设置对话框,这里提供了对运行时的参数选择设置 Enable Image and Text Check 开启图片和文本检查.允许用户在回放期间通过web_find(文本检测)或 ...

  6. Loadrunder脚本篇——webservice接口测试(二)

    1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“Import” ->弹出窗中选择“URL”,填写wsdl地址,导 ...

  7. Loadrunder脚本篇——webservice接口测试(一)

    函数介绍 soap_request 函数执行一个SOAP请求 函数原型 int soap_request( const char *StepName, ExpectedResponse, URL, , ...

  8. Loadrunder脚本篇——web_submit_data实现提交post请求

    概述 web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的GET方法,如果需要实现POST方法,可使用web_submit_form或web_submit_data() ...

  9. Loadrunder脚本篇——web_custom_request函数介绍

    c语言版本: int web_custom_request(const char *RequestName, , [EXTRARES, ,] LAST ); 参数说明: RequestName     ...

随机推荐

  1. Unity3d中模型导入轴向不对的解决方法

    在unity3d中导入模型,经常会遇到模型的轴向与unity中默认的轴向不符合的情况. 网上有很多解决办法都是说在3dmax中导出模型时修改模型的轴向,那么我接下来讲的就是如何在unity里面修改模型 ...

  2. LeetCode459. Repeated Substring Pattern

    Description Given a non-empty string check if it can be constructed by taking a substring of it and ...

  3. JS方法代理

    作者:Jiang, Jilin JS作为一门脚本语言.十分easy上手.外加其灵活性,能够轻而易举地扩展功能.今天,我们就聊聊JS的方法代理. 方法代理是脚本语言中常见的方法扩展形式.这样的灵活的形式 ...

  4. X264码率控制总结

    ABR,CQP,CRF X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ...

  5. HTTPS请求 SSL证书验证

    import urllib2 url = "https://www.12306.cn/mormhweb/" headers = {"User-Agent": & ...

  6. Cut the rope

    http://acm.nyist.net/JudgeOnline/problem.php?pid=651 描述We have a rope whose length is L. We will cut ...

  7. <转载> Jquery的性能优化-实用!

    我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来 ========================= ...

  8. 使用spring+quartz配置多个定时任务

    Spring被用在了越来越多的项目中, quartz也被公认为是比较好用的定时器设置工具, 在这里通过一个demo说明如何使用spring和quartz配置多个定时任务. 环境: eclipse + ...

  9. 带参数的main函数

    带参数的main函数 int main(int argc,char **argv)  或int main(int argc,char *argv[])  /*解析 依据<C程序设计语言(第二版. ...

  10. SharePoint服务器端对象模型 之 对象模型概述(Part 2)

    (三)Url 作为一个B/S体系,在SharePoint的属性.方法参数和返回值中,大量的涉及到了Url,总的来说,涉及到的Url可以分为如下四类: 绝对路径:完整的Url,包含了协议头(http或h ...