码迷,mamicode.com
首页 > 编程语言 > 详细

Loadrunder脚本篇——关联数组(参数数组)

时间:2018-01-25 18:25:13      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:ebs   post   gpo   tom   cee   dom   int   ram   span   

导言

   前面说过可以用关联取出服务器相关的一些动态变化的信息,前面也提过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脚本篇——关联数组(参数数组)

标签:ebs   post   gpo   tom   cee   dom   int   ram   span   

原文地址:https://www.cnblogs.com/langhuagungun/p/8351853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!