51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: sincky
打印 上一主题 下一主题

LoadRunner的一个解决方案

[复制链接]

该用户从未签到

41#
发表于 2007-8-31 16:59:34 | 只看该作者
好像在哪里见过。
回复 支持 反对

使用道具 举报

该用户从未签到

42#
发表于 2007-9-10 16:27:16 | 只看该作者

请问 #30 mfktafd 的帖子 中的问题,有知道的帮忙解答一下

web_custom_request(.................................
                              LAST);                           //请求(登陆等)  


把这个函数怎么使用的,能详细说一下好吗?

还想问一个问题:在调试脚本时,用lr_message(“调试信息”),运行时,调试信息没看到?


附:1、我用的是LR8.1汉化版;
      2、我已经在run-time setting里要打开enable logging的
回复 支持 反对

使用道具 举报

该用户从未签到

43#
发表于 2007-9-28 18:16:48 | 只看该作者
1.摘自关河的文章
web_custom_request应用示例
LoadRunner提供的web_custom_request函数可以用于实现参数的动态生成。在LoadRunner中,web_reg_save_param和custom_request都常于处理参数的动态生成。

web_reg_save_param函数是大家都已经熟悉的了,它的主要作用是从一个response中获得后续的request需要使用的数据,然后将其作为一个参数保存下来,供后续步骤使用。该方法在LoadRunner中被称为Correlation(关联)。

而web_custom_request函数则可以用于完全自定义向服务端发送的request。

接下来我们用一个实际的例子说明一下web_custom_request的具体应用:

以Mercury自带的MercuryWebTours例子为例,假设我们希望在登录进入后将用户的前两条记录删除,我们来看看用web_custom_request如何实现这个目标。

首先,我们尝试用HTML方式对该操作进行录制。录制后的脚本中与删除相关的部分大致如下:


web_url("welcome.pl",
    "URL=http://localhost/MercuryWebTours/welcome.pl?page=itinerary",
        "Resource=0",
        "RecContentType=text/html",
    "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=home",
    "Snapshot=t3.inf",
    "Mode=HTML",
    EXTRARES,
    "URL=images/in_itinerary.gif", "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=itinerary", ENDITEM,
    "URL=images/home.gif", "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=itinerary", ENDITEM,
        LAST);
lr_think_time(2);

web_submit_form("itinerary.pl",
    "Snapshot=t4.inf",
    ITEMDATA,
    "Name=1", "Value=on", ENDITEM,
    "Name=2", "Value=on", ENDITEM,        "Name=removeFlights.x", "Value=116", ENDITEM,
    "Name=removeFlights.y", "Value=8", ENDITEM,
    LAST);
我们通过树型模式查看一下在submit form的时候实际向服务器发出的请求的内容:


从请求内容中可以看到,我们通过POST方法发出了请求,请求发送的目的URL是/MercuryWebTours/itinerary.pl,发送的内容是:
"1=on&flightID=384-798-JM&2=on&flightID=3026-1592-JM&3=on&flightID=1194-2326-JM&.cgifields=1&.c"
"gifields=2&.cgifields=3&removeFlights.x=116&removeFlights.y=8"

从发送的内容中可以很明显的分析得出,1=on表示第一个checkbox是被选中的,flightID=384-798-JM表示的是第一条记录所对应的flightID。因此,如果我们需要自己组成这个发送的request的话,必须首先通过关联的方式获得前两条记录的flightID,然后再组成request的内容。

web_custom_request方法的原型是:
int web_custom_request (const char *RequestName, <List of Attributes>,[EXTRARES, <List of Resource Attributes>,] LAST );

其中List of Attributes的主要项目是Method,URL和BODY等。对这个例子来说,我们可以很容易构造出我们需要的request的BODY内容。
……
strcpy(creq, "Body=1=on&flightID=");
strcat(creq, lr_eval_string("{fID1}"));
strcat(creq, "&2=on&flightID=");
strcat(creq, lr_eval_string("{fID2}"));
strcat(creq, "&.cgifields=1&.cgifields=2");
strcat(creq, "&removeFlights.x=116&removeFlights.y=8");
……

其中{fID1}、{fID2}等都是通过关联获得的flightID的数据。

因此,我们可以根据图中的数据编写custom_request语句:

web_custom_request("itinerary.pl",
"Method=POST",
    "URL=http://localhost/MercuryWebTours/itinerary.pl",
    "RecContentType=text/xml",
    creq,
    "Snapshot=t4.inf",
    LAST);
较为完整的代码如下: Action()
{
    char creq[500];

    web_reg_save_param("fID1", "LB=INPUT TYPE=\"hidden\" NAME=\"flightID\" VALUE=\"", "RB=\"", "ORD=1",
        "SEARCH=BODY", LAST);
    web_reg_save_param("fID2", "LB=INPUT TYPE=\"hidden\" NAME=\"flightID\" VALUE=\"", "RB=\"", "ORD=2",
        "SEARCH=BODY", LAST);
    web_url("welcome.pl",
        "URL=http://localhost/MercuryWebTours/welcome.pl?page=itinerary",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=home",
        "Snapshot=t3.inf",
        "Mode=HTML",
        EXTRARES,
        "URL=images/in_itinerary.gif", "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=itinerary", ENDITEM,
        "URL=images/home.gif", "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=itinerary", ENDITEM,
        LAST);
    lr_think_time(2);

    strcpy(creq, "Body=1=on&flightID=");
    strcat(creq, lr_eval_string("{fID1}"));
    strcat(creq, "&2=on&flightID=");
    strcat(creq, lr_eval_string("{fID2}"));
    strcat(creq, "&.cgifields=1&.cgifields=2");
    strcat(creq, "&removeFlights.x=116&removeFlights.y=8");

    lr_output_message(creq);

    web_custom_request("itinerary.pl",
"Method=POST",
        "URL=http://localhost/MercuryWebTours/itinerary.pl",
        "RecContentType=text/xml",
        creq,
        "Snapshot=t4.inf",
        LAST);

    return 0;
}
2.是在output.txt文件中输出.
回复 支持 反对

使用道具 举报

该用户从未签到

44#
发表于 2007-10-17 15:21:14 | 只看该作者
看不懂,先收下
回复 支持 反对

使用道具 举报

该用户从未签到

45#
发表于 2007-10-17 15:22:36 | 只看该作者
搂住能不能详细解释一下:HTTP请求连接超时”“HTTP请求接收超时”“步骤下载超时”到底是指哪段时间呢? 因为不理解,所以不知道都设置为5秒会有什么问题。
回复 支持 反对

使用道具 举报

该用户从未签到

46#
发表于 2008-1-2 10:41:37 | 只看该作者
好贴!!虽然现在看不是很明白,但是慢慢学习
回复 支持 反对

使用道具 举报

该用户从未签到

47#
发表于 2008-2-18 15:44:09 | 只看该作者

学习了

感谢楼主,学习了
回复 支持 反对

使用道具 举报

该用户从未签到

48#
发表于 2008-3-10 09:40:24 | 只看该作者
现在还没达到斑竹的程度!~
回复 支持 反对

使用道具 举报

该用户从未签到

49#
发表于 2008-8-24 22:21:24 | 只看该作者
留个言,做个标志。很快就要用到了。。。thx!
回复 支持 反对

使用道具 举报

该用户从未签到

50#
发表于 2008-11-10 14:15:22 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

51#
发表于 2008-11-13 19:47:30 | 只看该作者
看不懂,不过正在学习中。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

52#
发表于 2009-7-28 17:42:51 | 只看该作者
收获了一些,还有一些看不懂,先收藏
回复 支持 反对

使用道具 举报

该用户从未签到

53#
发表于 2009-8-6 16:08:45 | 只看该作者
更2o楼一样的答案
回复 支持 反对

使用道具 举报

  • TA的每日心情

    2017-8-24 09:34
  • 签到天数: 11 天

    连续签到: 2 天

    [LV.3]测试连长

    54#
    发表于 2009-8-10 11:17:07 | 只看该作者
    看看,说不定以后用的着
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    55#
    发表于 2009-9-14 20:25:37 | 只看该作者
    学习,学习,3q
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    56#
    发表于 2010-11-1 21:11:18 | 只看该作者
    顶一下,不错不错....
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57#
    发表于 2010-11-11 15:48:05 | 只看该作者
    “在5秒内”是不是Transactions per Second小于5秒?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    58#
    发表于 2010-11-22 11:35:25 | 只看该作者
    学习中~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    59#
    发表于 2010-12-15 21:50:06 | 只看该作者
    看看再说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-3-16 15:27
  • 签到天数: 25 天

    连续签到: 1 天

    [LV.4]测试营长

    60#
    发表于 2012-4-19 14:45:25 | 只看该作者
    深入学习中
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-8 06:43 , Processed in 0.087612 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表