`
solem
  • 浏览: 34312 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

关联数组(转载)

 
阅读更多
http://www.blogjava.net/xingcyx/archive/2007/10/22/155041.html


工具:LoadRunner11,系统WINDOS XP。被测系统:DISCUZ。
业务一:登录后,发表帖子,返回帖子列表,浏览刚才新增的帖子。
关注点:如何浏览刚才新增的贴子,而不是其他帖子。
关联点:浏览帖子的URL中连接的地址,在Response Boby中显示为
<link href="http://localhost/bbs/forum.php?mod=viewthread&tid=23" rel="canonical" />,将http://localhost/bbs/forum.php?mod=viewthread&tid=23关联即可。
业务二:登录后,在帖子列表,随机浏览帖子。
关注点:如何能随机的浏览帖子,并且记录下浏览的那个帖子。
关联点:在帖子列表的URL中,在Response Boby中显示为<a href="forum.php?mod=viewthread&amp;tid=22&amp;extra=page%3D1" nclick="atarget(this)" class="xst" >测试之任重道远</a>,只需关联tid=22即可。但是返回的应该是很多的关联,所以需要在关联函数中添加Ord=All,就能关联到所有的参数,存在参数数组中。
用for (i=1;i<=lr_paramarr_len("link");i++)
{
  lr_output_message (lr_paramarr_idx ("link",i));
}
x=lr_paramarr_random ("link");
lr_save_string (x,"param");
达到随机取值,并且打印所有的关联到的参数。




2.2 获取参数数组

  前面的方法有一个缺点,它只能点击某个板块的第一个帖子。这显然不是我们想要的结果。我们想要结果是能够随机点击某个板块的一个帖子。这时需要用到参数数组。

  也就是执行 web_reg_save_param()函数的时候将某个板块首页的全部帖子的tid保存到一个参数数组中。脚本如下:

web_reg_save_param("topictid", 
    "LB=<a href=\"forum.php?mod=viewthread&tid=", 
    "RB=&extra=page%3D1\" onclick=\"atarget(this)\" class=\"xst\" >",         
    "Search=NoResource", 
       "Notfound=warning", 
    "ORD=ALL", 
    LAST);
  对照可以看出,此处把ORD=1,修改为了ORD=ALL。

  修改后整体脚本如下:

viewtopic() 

 
    //用于记录参数数组的长度 
    int len; 
 
    //用于记录参数数组中随机取出的一个参数的值 
    char * topic; 
 
     //查找出所有帖子的的tid,并将此放入参数数组中 
    web_reg_save_param("topictid", 
        "LB=<a href=\"forum.php?mod=viewthread&tid=", 
        "RB=&extra=page%3D1\" onclick=\"atarget(this)\" class=\"xst\" >",         
        "Search=NoResource", 
        "Notfound=warning", 
        "ORD=ALL", 
        LAST); 
 
 
    //进入某个版块 
    web_url("forum.php_3",  
        "URL=http://{IP}/bbs/forum.php?mod=forumdisplay&fid={fid}",  
        "Resource=0",  
        "RecContentType=text/html",  
        "Referer=http://{IP}/bbs/forum.php",  
        "Snapshot=t122.inf",  
        "Mode=HTML",  
        LAST); 
 
    //将数组长度的值赋值给len变量 
    len =  atoi(lr_eval_string("{topictid_count}")); 
 
    //将参数数组中随机取出的一个值赋给topic变量 
    topic = lr_paramarr_random("topictid"); 
 
    //将参数数组中随机取出的值保持为randomtopic参数 
     lr_save_string( topic,"randomtopic"); 
     if( len == 0) 
     { 
        return 0; 
     }else 
     { 
 
         web_url("forum.php_4",  
            "URL=http://{IP}/bbs/forum.php?mod=viewthread&tid={randomtopic}&extra=page%3D1",  
            "Resource=0",  
            "RecContentType=text/html",  
            "Referer=http://{IP}/bbs/forum.php?mod=forumdisplay&fid=2",  
            "Snapshot=t125.inf",  
            "Mode=HTML",  
            EXTRARES,  
            "Url=static/image/common/share_btn.png", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,  
            "Url=static/image/common/midavt_shadow.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,  
            "Url=static/image/common/fastreply.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,  
            "Url=static/image/common/edit.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,  
            LAST); 
 
     } 
 
 
 
 
 
   return 0; 
 
}
  在此说明下参数数组。我们可以通过下面的方法生成一个参数数组。

lr_save_string("www.baidu.com","site_1"); 
lr_save_string("www.sina.com","site_2"); 
lr_save_string("www.163.com","site_3"); 
lr_save_string("www.qq.com","site_4"); 
lr_save_string("4","site_count");
  此时参数数组名为site,各个参数的名为site_1,site_2,site_3,site_4。在一个参数数组中,有一个参数用来记录参数数组的长度。即参数名_count。








需求:通过关联取得的ParamName参数可能存在多个值,需要对每个ParamName参数值进行处理
脚本:可通过3种不同的实现方式,将每个参数值作为HTTP请求内容发出

web_reg_save_param("ParamName",
  "LB/IC=\"id\":\"OutputParameter.",
  "RB/IC=\",\"",
  "Ord=All",
  "Search=Body",
  "RelFrameId=1",
  LAST);
 
...


Paramcount=atoi(lr_eval_string("{ParamName_count}")); //参数个数
i=1;
while (i<=Paramcount) {
  sprintf(str,"{ParamName_%d}",i);        //生成ParamName_i

//方法一:将变量转为参数,直接在请求中使用参数
lr_save_string(lr_eval_string(str),"Value"); //对每个参数进行处理
web_submit_data("FreeQueryServlet_24",
  "Action=http://datasvr01:8081/freequery/FreeQueryServlet",
  "Method=POST",
  "RecContentType=text/html",
  "Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
  "Snapshot=t27.inf",
  "Mode=HTTP",
  ITEMDATA,
  "Name=className", "Value=ClientReportService", ENDITEM,
  "Name=methodName", "Value=addNewParam", ENDITEM,
  "Name=params", "Value=[\"{ClientID}\",\"OutputParameter.{Value}\",\"\"]", ENDITEM,
  LAST);



//方法二:通过strcpy、strcat方式组织字符串,通过变量发送请求
strcpy(s,"Value=[\"{ClientID}\",\"OutputParameter.");
  strcat(s,str);
strcat(s,"\",\"\"]");
web_submit_data("FreeQueryServlet_24",
  "Action=http://datasvr01:8081/freequery/FreeQueryServlet",
  "Method=POST",
  "RecContentType=text/html",
  "Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
  "Snapshot=t27.inf",
  "Mode=HTTP",
  ITEMDATA,
  "Name=className", "Value=ClientReportService", ENDITEM,
  "Name=methodName", "Value=addNewParam", ENDITEM,
  "Name=params", s, ENDITEM,
  LAST);
 

//方法三:通过sprintf格式化输出生成需要的字符串,通过变量发送请求
sprintf(s,"Value=[\"{ClientID}\",\"OutputParameter.%s\",\"\"]",str);
web_submit_data("FreeQueryServlet_24",
  "Action=http://datasvr01:8081/freequery/FreeQueryServlet",
  "Method=POST",
  "RecContentType=text/html",
  "Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
  "Snapshot=t27.inf",
  "Mode=HTTP",
  ITEMDATA,
  "Name=className", "Value=ClientReportService", ENDITEM,
  "Name=methodName", "Value=addNewParam", ENDITEM,
  "Name=params", s, ENDITEM,
  LAST);

i++;
}
分享到:
评论

相关推荐

    PHP关联数组的10个操作技巧

    关联数组的键可以是字符串或者数字,而且不必是连续的,这与索引数组的数值连续键不同。接下来将详细介绍操作PHP关联数组的10个技巧: 1、添加数组元素:在PHP中,可以通过指定键和对应的值直接创建关联数组。如果...

    php关联数组与索引数组及其显示方法

    主要分为两种类型:关联数组和索引数组。这两种数组在处理数据时有着不同的特性和用法。 1. **关联数组**: 关联数组是通过键(key)和值(value)对来组织数据的。键可以是任何字符串,而值则可以是任何类型的数据...

    Shell 数组与关联数组详解及实例代码

    Shell提供了两种类型的数组:普通数组和关联数组。 1. **普通数组** - **定义**:普通数组用一对圆括号`()`表示,元素之间用空格分隔。例如,`a=(1 2 3)`定义了一个包含三个元素的数组。 - **长度**:使用`${#...

    Linux Shell脚本系列教程(六):数组和关联数组

    一、数组和关联数组 数组是Shell脚本非常重要的组成部分,它借助索引将多个独立的独立的数据存储为一个集合。普通数组只能使用整数作为数组索引,关联数组不仅可以使用整数作为索引,也可以使用字符串作为索引。通常...

    php实现将二维关联数组转换成字符串的方法详解

    然而,在某些情况下,可能需要将二维关联数组转换成字符串形式,以便于数据的输出、存储或进一步处理。本文详细介绍了一种实现将二维关联数组转换成字符串的方法,涵盖了数组递归遍历、转换、去重和拼接等技术要点。...

    Linux shell数组与关联数组的用法实例

    本篇将详细讲解Linux Shell中的两种数组类型:序列数组和关联数组,并提供实例来帮助理解它们的使用方法。 1. **关联数组** 关联数组,也称为哈希表或字典,允许我们使用任意字符串作为索引来存储和检索值。在...

    php通过array_merge()函数合并关联和非关联数组的方法

    本文将详细介绍如何使用array_merge() 函数来合并关联数组和非关联数组。 关联数组(associative array)是一种使用字符串或其他类型的值作为键的数组。与之相对的是索引数组(indexed array),其键是数字索引。在...

    JavaScript中的索引数组、关联数组和静态数组、动态数组讲解

    1、从数组的下标分为索引数组、关联数组 代码如下: /* 索引数组,即通常情况下所说的数组 */ var ary1 = [1,3,5,8]; //按索引去取数组元素,从0开始(当然某些语言实现从1开始) //索引实际上就是序数,一个整型...

    基于php数组中的索引数组和关联数组详解

    数组分为两种主要类型:索引数组和关联数组。 **索引数组** 是一种以数字作为键的数组,这些键通常是连续的整数,并且自增。在PHP中,索引数组的默认起始键值是0,每次增加一个元素,键值自动递增1。例如: ```php...

    PHP程序设计-3期(KC016) 2.7.2关联数组拓展知识.doc

    这种灵活性使得关联数组在处理复杂的数据结构时尤其有用,比如数据库查询结果、配置文件、或者在需要以键值对形式存储数据的场景。 `array_keys()`函数是PHP提供的一个内置函数,专门用于处理关联数组。正如描述中...

    php对关联数组循环遍历的实现方法

    在处理复杂的关联数组时,还可以使用嵌套的foreach循环来遍历数组中的数组(多维数组),这为处理诸如表格数据、数据库查询结果等复杂数据提供了便利。 最后,尽管foreach循环非常适合遍历关联数组,但也有其他一些...

    PHP二维关联数组的遍历方式(实例讲解)

    二维关联数组可以理解为一个数组中的每个元素又是一个包含多个键值对的数组,这样的结构使得数据组织更为灵活。本篇文章将详细讲解如何遍历PHP中的二维关联数组,并通过实例来加深理解。 首先,我们需要了解两种...

    php通过ksort()函数给关联数组按照键排序的方法

    关联数组是一种特殊的数据结构,其中的键(key)通常是字符串,而值(value)可以是任何类型的数据。有时,我们需要根据关联数组的键进行排序,以便于数据分析或展示。PHP提供了一个名为`ksort()`的内置函数,专门...

    python创建关联数组(字典)的方法

    本文实例讲述了python创建关联数组(字典)的方法。分享给大家供大家参考。具体分析如下: 关联数组在python中叫字典,非常有用,下面是定义字典的两种方法 # Dictionary with quoted or variable keys d1 = {name:...

    PHP程序设计-3期(KC016) 2.7.2关联数组常见问题.docx

    然而,对于初学者而言,关联数组可能会带来一些常见问题。以下是针对这些问题的详细解释和解决方法: **问题 1:使用字符串作为键名,忘记加引号** 在PHP中,字符串键名必须用引号括起来,否则PHP会尝试将其解析为...

    IE9关联数组导致内存泄漏测试报告

    标题中的“IE9关联数组导致内存泄漏测试报告”指出了一个特定的问题,即在使用Internet Explorer 9(IE9)浏览器时,由于与关联数组(Array-like object)相关的编程技术,可能会引发内存泄漏问题。内存泄漏是指程序...

    [原创] SV中数组代码实践笔记

    在系统Verilog(SV)中,数组是一种非常重要的数据结构,它允许我们存储相同类型的数据集合。这篇原创的“SV中数组代码实践笔记”显然旨在帮助读者深入理解如何在硬件描述语言中有效地使用数组。以下是对SV数组的...

Global site tag (gtag.js) - Google Analytics