51Testing软件测试论坛

标题: 进来看看lr关联函数总报错! [打印本页]

作者: zhuxiaoyan003    时间: 2009-9-21 15:53
标题: 进来看看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
知道的给说声啊。别总飘过……
作者: samllyn    时间: 2009-9-21 16:24
具体报什么错啊 要发下log啊
作者: lijian422202    时间: 2009-9-21 16:37
很明显的。。你关联函数放的地方有错误。你是想通过关联拿到userSession,但却把关联函数放在提交表单的前面(此表单已经存在了已知的userSession),所以这个提交表单的请求并不是从服务器返回userSession的请求。
作者: samllyn    时间: 2009-9-21 16:43
恩 楼上的见教了 我也对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
waiting the reply log
作者: zhuxiaoyan003    时间: 2009-9-22 09:58
reply log没什么用!关联函数没设置好,会报各种错误。即可能会把不是错误的地方,报成错!
我是这么理解的:由于web_reg_save_param是一个注册类型的函数,所以把这个关联函数放在了action中的起始位置。那么在后面用到时,这个函数就能起作用了。
作者: GeorgeWangLC    时间: 2009-9-22 10:12
同意5楼的说法
作者: lijian422202    时间: 2009-9-22 10:12
原帖由 samllyn 于 2009-9-21 16:43 发表
恩 楼上的见教了 我也对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
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
这个还差别不大啊。。。没发现中间多了一个请求吗
作者: zhuxiaoyan003    时间: 2009-9-22 11:10
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
郁闷……资质愚钝,还没弄明白呢!
作者: zhuxiaoyan003    时间: 2009-9-24 14:37
我昨天又重新录制了一次,自己手写的关联函数,就能跑过去了!
跟这个一模一样!
可为什么这个就跑不过去,还是没解……
作者: yzylion    时间: 2009-9-24 14:55
把跑步过去和跑的过去的脚步做了比较比较不出不一致的地方吗?
可以都贴上来吗?(做一个说明哪个是过哪个是不过的)
作者: 多米尼克    时间: 2009-10-12 14:12
关联函数放置的位置不对

不是在submit_data之前

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

只要用httpwatch看下就知道了,sessionid是在登录页面产生的,而不是在提交数据的时候产生的。
作者: cexowyc    时间: 2009-10-12 16:36
发下你的Server response,
应该是位置问题




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2