zhuxiaoyan003 发表于 2009-9-21 15:53:17

进来看看lr关联函数总报错!

用lr录制它自带的飞机订票例子,然后做关联
代码如下:
//我写的关联函数,觉得没有问题啊。可是回放时,还是跑不过去!请高手指点一下,哪的问题啊?
web_reg_save_param("UUU",
"LB=userSession value=",
"RB=>",
"Ord=1",               
"Search=Body",          
LAST);

web_submit_data("login.pl",
                "Action=http://127.0.0.1:1080/WebTours/login.pl",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
                "Snapshot=t2.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=userSession", "Value={UUU}", ENDITEM,
                "Name=username", "Value=zhuxiao", ENDITEM,
                "Name=password", "Value=123456", ENDITEM,
                "Name=JSFormSubmit", "Value=on", ENDITEM,
                "Name=login.x", "Value=47", ENDITEM,
                "Name=login.y", "Value=11", ENDITEM,
                LAST);

zhuxiaoyan003 发表于 2009-9-21 16:02:29

知道的给说声啊。别总飘过……

samllyn 发表于 2009-9-21 16:24:46

具体报什么错啊 要发下log啊

lijian422202 发表于 2009-9-21 16:37:41

很明显的。。你关联函数放的地方有错误。你是想通过关联拿到userSession,但却把关联函数放在提交表单的前面(此表单已经存在了已知的userSession),所以这个提交表单的请求并不是从服务器返回userSession的请求。

samllyn 发表于 2009-9-21 16:43:45

恩 楼上的见教了 我也对Loadrunner的几个函数不是很熟悉,刚才查了下帮助,web_reg_save_param应该放在web_submit_form等函数之前,然后才会将类似session之类的保存到变量中

/*This web_reg_save_param call applies to the following action function: web_submit_form. */

    web_reg_save_param("outFlightVal",

    "LB=outboundFlight value=", "RB= checked >", LAST);

    web_submit_form("reservations.pl",

      "Snapshot=t4.inf",

      ITEMDATA,

      "Name=depart", "Value=London", ENDITEM,

      "Name=departDate", "Value=11/20/2003", ENDITEM,

      "Name=arrive", "Value=New York", ENDITEM,

      "Name=returnDate", "Value=11/21/2003", ENDITEM,

      "Name=numPassengers", "Value=1", ENDITEM,

      "Name=roundtrip", "Value=<OFF>", ENDITEM,

      "Name=seatPref", "Value=None", ENDITEM,

      "Name=seatType", "Value=Coach", ENDITEM,

      "Name=findFlights.x", "Value=83", ENDITEM,

      "Name=findFlights.y", "Value=16", ENDITEM,

      LAST);

/*

The result of the web_reg_save_param having been called before the web_submit_form is:

Action.c(15): Notify: Saving Parameter "outFlightVal = 230;378;11/20/2003"

*/

// Now use the saved outFlightVal

    web_submit_form("reservations.pl_2",

      "Snapshot=t5.inf",

      ITEMDATA,

      "Name=outboundFlight", "Value={outFlightVal}", ENDITEM,

      "Name=reserveFlights.x", "Value=92", ENDITEM,

      "Name=reserveFlights.y", "Value=10", ENDITEM,

      LAST);

/*

Action.c(34): Notify: Parameter Substitution: parameter "outFlightVal" = "230;378;11/20/2003" */

yzylion 发表于 2009-9-21 21:00:12

waiting the reply log

zhuxiaoyan003 发表于 2009-9-22 09:58:50

reply log没什么用!关联函数没设置好,会报各种错误。即可能会把不是错误的地方,报成错!
我是这么理解的:由于web_reg_save_param是一个注册类型的函数,所以把这个关联函数放在了action中的起始位置。那么在后面用到时,这个函数就能起作用了。

GeorgeWangLC 发表于 2009-9-22 10:12:09

同意5楼的说法

lijian422202 发表于 2009-9-22 10:12:59

原帖由 samllyn 于 2009-9-21 16:43 发表 http://bbs.51testing.com/images/common/back.gif
恩 楼上的见教了 我也对Loadrunner的几个函数不是很熟悉,刚才查了下帮助,web_reg_save_param应该放在web_submit_form等函数之前,然后才会将类似session之类的保存到变量中

/*This web_reg_save_param call app ...

你仔细看看例子与LZ发的案例,确实web_reg_save_param都在请求之前,但你的例子是拿到返回的数据进行关联,然后在把关联的数据在下一个请求中发出,例子一起是2个请求,也就是1个请求是拿数据进行关联,另一个是把关联数据做参数发请求。
而LZ的只有一个请求,怎么可能又用这个请求拿数据,又用他发数据 ? 所以web_reg_save_param放错了地方,应该在LZ的那个请求之前的某个请求产生的返回数据

zhuxiaoyan003 发表于 2009-9-22 10:27:40

web_reg_save_param("WCSParam_Diff1",
                "LB=userSession value=",
                "RB=>",
                "Ord=1",
                "RelFrameId=1.1",
                "Search=Body",
                "IgnoreRedirections=Yes",
                LAST);       
web_url("welcome.pl",
                "URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://127.0.0.1:1080/WebTours/",
                "Snapshot=t1.inf",
                "Mode=HTML",
                LAST);
        lr_think_time(11);


        web_submit_data("login.pl",
                "Action=http://127.0.0.1:1080/WebTours/login.pl",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
                "Snapshot=t2.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=userSession", "Value={WCSParam_Diff1}", ENDITEM,
                "Name=username", "Value=zhuxiao", ENDITEM,
                "Name=password", "Value=111111", ENDITEM,
                "Name=JSFormSubmit", "Value=on", ENDITEM,
                "Name=login.x", "Value=51", ENDITEM,
                "Name=login.y", "Value=11", ENDITEM,
                LAST);
这是我用lr中的自动关联功能,lr自动写的关联函数,看看它与我第一次发的代码。我觉得它添加的函数位置以及参数化的位置,与我自己手写的也没什么区别啊。可是这个脚本就能跑过去。我自己写的就跑步过去……

[ 本帖最后由 zhuxiaoyan003 于 2009-9-22 10:28 编辑 ]

lijian422202 发表于 2009-9-22 10:34:14

这个还差别不大啊。。。没发现中间多了一个请求吗

zhuxiaoyan003 发表于 2009-9-22 11:10:39

web_reg_save_param("UUU",
               "LB=userSession value=",
               "RB=>",
               "Ord=1",               
               "Search=Body",          
               LAST);       
web_url("WebTours",
                "URL=http://127.0.0.1:1080/WebTours/",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Mode=HTML",
                LAST);

        web_url("header.html",
                "URL=http://127.0.0.1:1080/WebTours/header.html",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://127.0.0.1:1080/WebTours/",
                "Mode=HTML",
                LAST);

        web_url("welcome.pl",
                "URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://127.0.0.1:1080/WebTours/",
                "Snapshot=t1.inf",
                "Mode=HTML",
                LAST);
       
        lr_think_time(11);

        web_submit_data("login.pl",
                "Action=http://127.0.0.1:1080/WebTours/login.pl",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
                "Snapshot=t2.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=userSession", "Value={UUU}", ENDITEM,
                "Name=username", "Value=zhuxiao", ENDITEM,
                "Name=password", "Value=123456", ENDITEM,
                "Name=JSFormSubmit", "Value=on", ENDITEM,
                "Name=login.x", "Value=47", ENDITEM,
                "Name=login.y", "Value=11", ENDITEM,
                LAST);
这个是我第一个帖子的完整代码!!也就是那个一直跑不过去的代码!并不是中间有几个web_url()的问题!

[ 本帖最后由 zhuxiaoyan003 于 2009-9-22 11:11 编辑 ]

zhuxiaoyan003 发表于 2009-9-22 11:12:22

郁闷……资质愚钝,还没弄明白呢!

zhuxiaoyan003 发表于 2009-9-24 14:37:52

我昨天又重新录制了一次,自己手写的关联函数,就能跑过去了!
跟这个一模一样!
可为什么这个就跑不过去,还是没解……

yzylion 发表于 2009-9-24 14:55:55

把跑步过去和跑的过去的脚步做了比较比较不出不一致的地方吗?
可以都贴上来吗?(做一个说明哪个是过哪个是不过的)

多米尼克 发表于 2009-10-12 14:12:20

关联函数放置的位置不对

不是在submit_data之前

而应该是在web_url("webtours",之前的

只要用httpwatch看下就知道了,sessionid是在登录页面产生的,而不是在提交数据的时候产生的。

cexowyc 发表于 2009-10-12 16:36:41

发下你的Server response,
应该是位置问题
页: [1]
查看完整版本: 进来看看lr关联函数总报错!