51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6869|回复: 18
打印 上一主题 下一主题

[原创] LR自带例子回放时的参数关联问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-18 11:42:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用范例录了一个脚本,使用的是HTML-based,其它基本上都是默认设置。

使用jojo/bean进入例子中后进行了一个最基本的定票操作然后退出,录制完毕后,将depart和arrive参数化,然后回放,系统提示要求对userSession进行关联,自动关联好之后,回放成功,然后再设置runtime setting,将number of iteration改为2,再次回放时出现错误:

Action.c(59): Error -27979: Requested form not found          [MsgId: MERR-27979]
Action.c(59): web_submit_form("reservations.pl_2") highest severity level was "ERROR", 0 body bytes, 0 header bytes          [MsgId: MMSG-26388]

我知道这是因为depart&arrive city改变了,所以flight information也变了,所以会报错,但系统没有提示要求关联啊,不知道怎么关联这个呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-5-18 12:53:38 | 只看该作者
把你的脚本发出来看看。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-5-18 14:34:20 | 只看该作者
#include "web_api.h"


Action()
{
        // [WCSPARAM WCSParam_Diff1 42 95541.2503847712tQVttADpAzzzzzzHcQtizptVit] Parameter {WCSParam_Diff1} created by Correlation Studio
        web_reg_save_param( "WCSParam_Diff1", "LB=userSession value=", "RB=>", "Ord=1", "Search=Body", "RelFrameId=1.2.1", LAST );
        web_url("MercuryWebTours",
                "URL=http://localhost:7080/MercuryWebTours/",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTML",
                LAST);

        lr_think_time( 2 );

        web_submit_data("login.pl",
                "Action=http://localhost:7080/MercuryWebTours/login.pl",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://localhost:7080/MercuryWebTours/nav.pl?in=home",
                "Snapshot=t2.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=userSession", "Value={WCSParam_Diff1}", ENDITEM,
                "Name=username", "Value=jojo", ENDITEM,
                "Name=password", "Value=bean", ENDITEM,
                "Name=JSFormSubmit", "Value=on", ENDITEM,
                "Name=login.x", "Value=44", ENDITEM,
                "Name=login.y", "Value=16", ENDITEM,
                LAST);

        web_image("Search Flights Button",
                "Alt=Search Flights Button",
                "Snapshot=t3.inf",
                LAST);

        lr_think_time( 10 );

        web_submit_form("reservations.pl",
                "Snapshot=t4.inf",
                ITEMDATA,
                "Name=depart", "Value={depart}", ENDITEM,
                "Name=departDate", "Value=05/19/2007", ENDITEM,
                "Name=arrive", "Value={arrive}", ENDITEM,
                "Name=returnDate", "Value=05/20/2007", ENDITEM,
                "Name=numPassengers", "Value=1", ENDITEM,
                "Name=roundtrip", "Value=<OFF>", ENDITEM,
                "Name=seatPref", "Value=Window", ENDITEM,
                "Name=seatType", "Value=First", ENDITEM,
                "Name=findFlights.x", "Value=51", ENDITEM,
                "Name=findFlights.y", "Value=12", ENDITEM,
                LAST);

        lr_think_time( 3 );

        web_submit_form("reservations.pl_2",
                "Snapshot=t5.inf",
                ITEMDATA,
                "Name=outboundFlight", "Value=121;444;05/19/2007", ENDITEM,
                "Name=reserveFlights.x", "Value=60", ENDITEM,
                "Name=reserveFlights.y", "Value=13", ENDITEM,
                LAST);

        web_submit_form("reservations.pl_3",
                "Snapshot=t6.inf",
                ITEMDATA,
                "Name=firstName", "Value=Joseph", ENDITEM,
                "Name=lastName", "Value=Marshall", ENDITEM,
                "Name=address1", "Value=234 Willow Drive", ENDITEM,
                "Name=address2", "Value=San Jose/CA/94085", ENDITEM,
                "Name=pass1", "Value=Joseph Marshall", ENDITEM,
                "Name=creditCard", "Value=123456789", ENDITEM,
                "Name=expDate", "Value=0909", ENDITEM,
                "Name=saveCC", "Value=on", ENDITEM,
                "Name=buyFlights.x", "Value=69", ENDITEM,
                "Name=buyFlights.y", "Value=15", ENDITEM,
                LAST);

        web_image("SignOff Button",
                "Alt=SignOff Button",
                "Ordinal=1",
                "Snapshot=t7.inf",
                LAST);

        return 0;
}
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-5-18 14:36:10 | 只看该作者
原帖由 zhuzhenh 于 2007-5-18 12:26 发表
自动关联不能解决的所有问题,需要手动关联
先获取对应depart&arrive city的所有航班,然后选择其中一条,替换原来数据



不太明白,怎么获取?能不能说得详细点?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-5-21 10:28:53 | 只看该作者
版主捏 ?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-5-21 11:25:41 | 只看该作者
这个例子我以前做过
首先,这个例子是不需要手动关联的,刚看到楼主的脚本已经自动关联上了,所以不需要再关联了,楼主出现的这个错误是表单提交时发生的错误,
建议楼主按当天日期再重新录制一次后再参数化试试,错误也许就不再现了
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-5-22 10:46:36 | 只看该作者
回楼上的:
我重新录制了,参数化depart & arrive然后回放,iteration 1不会报错,但后面的迭代都会报错:Error -27979: Requested form not found          [MsgId: MERR-27979]....

咋弄啊???还有什么地方需要整啊?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-5-22 10:54:30 | 只看该作者
另外一个问题:
LR是通过什么来获取需要提交的值的呢?比如说上面这个例子,我录制时选择的是Denver到Los Angeles,所以下面有:
        web_submit_form("reservations.pl_2",
                "Snapshot=t8.inf",
                ITEMDATA,
                "Name=outboundFlight", "Value=032;238;05/23/2007", ENDITEM,
                "Name=reserveFlights.x", "Value=67", ENDITEM,
                "Name=reserveFlights.y", "Value=11", ENDITEM,
                LAST);
也就是denver到Los Angeles的航班为032航班,票价是238元,日期是05/23/2007,但当我们迭代时,根据参数化的depart和arrive将会取不同的值,也就是说Value=032;238;05/23/2007这些数据都会变化,那提交数据时肯定有问题,那LR是怎么处理这种情况的呢?
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-5-22 13:56:15 | 只看该作者
那只有将所有相关的均参数化了...
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-5-22 16:24:18 | 只看该作者

回复 #8 silvertree 的帖子

只有一次iteration成功是吧?
可能你参数化的时候选择 blocksize了,楼主不妨把参数化设置截图下来,这样比较容易分析错误
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-5-22 17:27:49 | 只看该作者
把这个问题详细的再理一遍:
一、录制完定票的操作,然后将depart和arrive参数化,depart为Denver/Frankfurt,arrive为Los Angeles/London,因为录制时用的是第一组数据,所以在代码里就有“"Name=outboundFlight", "Value=032;238;05/23/2007"”,其中032和238代表的是Denver至Los Angeles的航班号和价格。
(参数化时使用默认设置:By number、Select next row:Sequential、Update value on:Each iteration)

二、迭代为1时回放成功,没有任何问题,将迭代改为2,当程序运行到:
web_submit_form("reservations.pl_2",
                "Snapshot=t8.inf",
                ITEMDATA,
                "Name=outboundFlight", "Value=032;238;05/23/2007", ENDITEM,
                "Name=reserveFlights.x", "Value=67", ENDITEM,
                "Name=reserveFlights.y", "Value=11", ENDITEM,
                LAST);
就出现问题了:
Action.c(59): Error -27979: Requested form not found          [MsgId: MERR-27979]
Action.c(59): web_submit_form("reservations.pl_2") highest severity level was "ERROR", 0 body bytes, 0 header bytes          [MsgId: MMSG-26388]

三、想到关联的问题,于是打开mercurytours选择第二组数据Frankfurt-London查看其中的一条航班和价格信息,然后将代码Value=032;238;05/23/2007中的032和238参数化,加入刚才查看到的航班和价格信息(122和251),二次迭代运行成功。修改一下参数化的数据,将122改为123,然后回放,结果再次提示上面的错误。

四、问题来了:在例子中如果航班号和价格也都必须使用参数化,并且还必须和系统完全匹配的话,那还怎么模拟多人使用不同数据进行操作?
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-5-22 17:30:24 | 只看该作者
原帖由 bingbingyang11 于 2007-5-22 16:24 发表
只有一次iteration成功是吧?
可能你参数化的时候选择 blocksize了,楼主不妨把参数化设置截图下来,这样比较容易分析错误



是只有一次iteration成功啊!
但参数时我都是使用的默认选项,blocksize是灰色的呀

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-5-24 13:47:50 | 只看该作者
录制后对比了下,发现没有楼主这段脚本“"Name=outboundFlight", "Value=032;238;05/23/2007", ENDITEM,”
楼主录制的时候用的java控件了吗?
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-8-28 14:20:36 | 只看该作者
楼主,我遇到了和你一样的问题,刚开始是怀疑关联问题
或者是interation的设置或者是变量设置问题
后来查了资料才发现不是这些原因
我是这样解决的:
关键字]LR回放 ERROR 解决方法  
在LR中录制脚本时有如下问题:

在录制时一切正常,而回放时提示类似如下错误:

Action.c(41): Error -27979: Requested form not found                                [MsgId: MERR-27979]
             Action.c(41): web_submit_form highest severity level was "ERROR",              0 body bytes, 0 header bytes                       [MsgId: MMSG-27178]"

 这时在tree view中看不到此组件的相关URL。
 
处理方法如下:
1, 打开recording options,在internet protocol下的recording中选择recording level为HTML-based script,点击HTML Advanced,选择script type为A script containing explicit.即可。
2, 选择使用URL_based script录制。

另外,附上帮助中的这个错误代码的说明:
Message Code 27979  
Requested form not found  

The form was not found in the page received from the server. Possible reasons: (i) The current or a previous HTML page was changed after the script was recorded. (ii) A previous request navigated to a wrong page or failed. (iii) One or more web_submit_form arguments are missing or incorrect (especially for manually coded, parameterized, or correlated functions). (iv) The server returned an unexpected page (e.g., under excessive load).  

Troubleshooting  
If the current or previous HTML page was changed, look for the correct properties of the form used in the text (e.g., action), and change it in the script.  
If your snapshots and extended log are disabled, enable them and run the script again.  
(i) To enable Snapshots: Select Tools > General Options > Correlation, and check the Save correlation information during replay box.  
(ii) To enable Extended Log: Select Run-time Settings > General: Log, and check Enable logging, Always send messages, Extended log, Data returned by server, Advanced trace.  
Compare the record and replay snapshots for each step in the script from the beginning, and locate the first difference. If you identify a difference in the snapshots, locate the corresponding HTTP request in both the recording log and the extended log. Compare the requests and, if they are different, have the replay issue exactly the same request. This can be done, for example, by adding web_add_header (for adding missing headers or adjusting existing ones), web_remove_auto_header (for removing extra headers), and web_add_cookie (for missing cookies).  
If some correlation is missing, (e.g., the recording and replay runs have different session IDs), use the correlation tool to locate and handle such cases.
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-8-28 14:32:47 | 只看该作者

回复 #3 Zee 的帖子

另外我看了Zee的如何在LR中做关联的帖子
问题一:我的教本也是出现了Zee所说的:
Action.c(37): Error -27979: Requested form not found     [MsgId: MERR-27979]
Action.c(37): web_submit_form("com.mercurytours.servlet.IteneraryServlet") highest severity level was "ERROR", 0 body bytes, 0 header bytes         [MsgId: MMSG-26388]
一样的错误,但是我不是通过教本关联解决的,而是通过上述的选择script type为A script containing explicit,解决了,为什么这样能解决呢?
问题二:知道错误代码后,我怎么搜不到help文档里的相关说明,在哪个文档里面,我用的是LR8。0?
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-8-28 14:58:00 | 只看该作者
学习中~~
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2011-11-18 10:56:16 | 只看该作者
应用程序范例使用了动态数据来处理航班信息。这就需要参数化或者相互关联以保证多个用户运行而不会出错。
转换到Script view.,选择View > Script View,或者单击Script View按钮。
找到以“Name=outboundFlight”开始的那行,并在前边加反斜线(//),修改后的行应该如下:// “Name=outboundFlight”, ......

再次回放就好了
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2011-12-6 14:33:08 | 只看该作者
我也碰到相同的问题。 困扰很久。 在网上了很久。 终于发现了一个解决办法。 Recording options-->
URL-based script, 重新录制脚本。 就可以了。
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2014-5-22 10:36:00 | 只看该作者
回复 15# flyfly310


    不错的样子!!!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-27 10:03 , Processed in 0.090342 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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