51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5544|回复: 39
打印 上一主题 下一主题

[原创] 脚本录制与参数化设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-3-12 10:57:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请大家帮忙看一下.也许你们也遇到过的!所以我将标题修改为资料了!请原谅.
使用LR录制了一份脚本.其中有一个动态数据taskid.它是指工作流ID.
一个工程中包括很多的工作流.每一个工作流都有不同的taskid.
录制脚本之后.我写了一个
web_reg_save_param("task_id",
  "LB/IC=<a href=\"javasrcipt:openTaskWindow('",
  "RB/IC=')",
  "Ord=1",
  "Search=ALL",
  LAST);
其中程序代码中的taskid是这样的:<td><a href="javascript:openTaskWindow('4')">UserTask</a></td>,这里taskid=4;
为了从服务端获取这个task_id.然后我在录制脚本中.将所有出现taskid的地方都用file类型的叫task_id参数替换,
但是总是搞不清这段小程序应该放在哪个位置.每次更换位置都会有错误:no math found task_id.
这个问题已经困扰了我很久了.非常闹心啊.哪位同仁解决过这类问题的给小弟提示一下.多谢了.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-3-12 10:58:55 | 只看该作者
国际惯例我先顶一下.
这个问题我问了好几次了.一直都没人回答.好伤心.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-3-12 11:20:11 | 只看该作者
大家不要看了就走.说句话嘛
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-3-12 12:43:05 | 只看该作者
Action.c(110): Error -26377: No match found for the requested parameter "task_id". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size          [MsgId: MERR-26377]
Action.c(110): web_url("taskdetail.do") highest severity level was "ERROR", 2712 body bytes, 150 header bytes, 30 chunking overhead bytes          [MsgId: MMSG-26387]
Ending action Action.
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-3-12 13:36:06 | 只看该作者
web_reg_save_param is a registration type function. It registers a request to find and save a text string within the server response. The operation is performed only after executing the next action function, such as web_url.
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-3-12 13:51:02 | 只看该作者
Zee.位置问题已经解决.
但现在总是提示获取的taskid不够准确.
其中程序中涉及到的地方一共有:
<script type="text/javascript">
function openTaskWindow(taskId){       
  theLeft=(screen.width - 600)/2;
  theTop=(screen.height - 500)/2;
  window.open("taskdetail.do?fromMonitoringList=true&taskid="+taskId,'','scrollbars,top='+theTop+',left='+theLeft+',width=600,height=500,resizable=yes');
}
function openErrorTaskWindow(taskId){       
  theLeft=(screen.width - 600)/2;
  theTop=(screen.height - 500)/2;
  window.open("errortaskDetail.do?fromMonitoringList=true&errorTaskId="+taskId,'','scrollbars,top='+theTop+',left='+theLeft+',width=600,height=500,resizable=yes');
}
这里有taskId,还有
<td><a href="javascript:openTaskWindow('4')">UserTask</a></td>
这个4也是taskid.
我写的web_reg_save_param();应该取哪个值呢?
几乎所有的我都试了.都不好使.
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-3-12 15:07:47 | 只看该作者
我的问题是太简单.还是太难?怎么没人回答.?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-3-12 16:46:21 | 只看该作者
应该取哪个值?

你想取哪个值。看你在前面写的:

web_reg_save_param("task_id",
  "LB/IC=<a href=\"javasrcipt:openTaskWindow('",
  "RB/IC=')",
  "Ord=1",
  "Search=ALL",
  LAST);

你取的是第一个值。

ORD: Indicates the ordinal position or instance of the match. The default instance is 1. If you specify "All," it saves the parameter values in an array. This attribute is optional.
Note: The use of Instance instead of ORD is supported for backward compatibility, but deprecated.
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-3-12 18:21:11 | 只看该作者
你的软件实现方式和我测试的很类似,只是你的是bs,我的是cs。
思路是每次将服务器返回的taskid存到变量中作为下一步处理的对象。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-3-13 08:57:43 | 只看该作者
我也是这个思路.但是在每次执行之后.就是获取不到这个task_id.
web_reg_save_param();
中LB,RB都=空的时候.web_reg_save_param下的脚本就能够正常执行.
但是当LB=<a href=\"javasrcipt:openTaskWindow('
  RB=')的时候这个函数下面的脚本就不执行了.直接错误.
Error -26377: No match found for the requested parameter "task_id". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size          [MsgId: MERR-26377]
Action.c(116): web_url("taskdetail.do") highest severity level was "ERROR", 5666 body bytes, 355 header bytes, 18 chunking overhead bytes          [MsgId: MMSG-26387]
Ending action Action.
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-3-13 09:25:39 | 只看该作者
你把取出的值打印出来看看。
还有,你是在哪里调用这个变量的?
别写错地方了。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-3-13 10:25:10 | 只看该作者
lr_output_message("aaaaa=%s",lr_eval_string("{taskId}"));
打印结果是:
aaaaa=taskId;
当"LB= ","RB= ",的时候打印结果是aaaaa=28.这个28是我第一次录制的时候用到的taskid值.
   web_reg_save_param("task_id",
     "LB/IC=<a href=\"javasrcipt:openTaskWindow('",
     "RB/IC=')",
     "Ord=1",
     "Search=ALL",
      LAST );

        lr_output_message("aaaaa=%s",lr_eval_string("{taskId}"));

        web_url("checktaskstate.jsp",
                "URL=http://192.168.0.135:8888/usertasks/checktaskstate.jsp",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://192.168.0.135:8888/usertasks/activityList.do?flowId=",
                "Snapshot=t6.inf",
                "Mode=HTML",
                LAST);

        web_url("taskdetail.do",
                "URL=http://192.168.0.135:8888/usertasks/taskdetail.do?fromMonitoringList=true&taskId={taskId}",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t7.inf",
                "Mode=HTML",
                LAST);
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-3-13 14:20:07 | 只看该作者
老大们进来看看.帮解决一下啊.
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-3-13 14:55:35 | 只看该作者
感觉你的   web_reg_save_param("task_id",
     "LB/IC=<a href=\"javasrcipt:openTaskWindow('",
     "RB/IC=')",
     "Ord=1",
     "Search=ALL",
      LAST );
左右边界写的不对。自己检查一下。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2007-3-13 15:07:58 | 只看该作者
这是我要提取数据的界面代码.
高手指点一我应该怎么写这个web_reg_save_param();
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2007-3-13 15:11:05 | 只看该作者
itemArray[itemArray.length]=new Item("6_1",
                                    "",
                                    "",                                    
                                    "UserTask",
                                    " ",
                                    " ",
                                    "2007-03-13 14:41",
                                    "Ready",
                                    " ",                                   
                                    "",
                                    "",
                                    "6",
                                    "images/ready.gif",
                                    true);
   
  initAllItems(itemArray,1);
  
</script>


<script>
function change(defId) {
        ajaxChange(defId);
}
</script>

<script type="text/javascript">
function openTaskWindow(taskId){       
  theLeft=(screen.width - 600)/2;
  theTop=(screen.height - 500)/2;
  window.open("taskdetail.do?fromMonitoringList=true&taskid="+taskId,'','scrollbars,top='+theTop+',left='+theLeft+',width=600,height=500,resizable=yes');
}
function openErrorTaskWindow(taskId){       
  theLeft=(screen.width - 600)/2;
  theTop=(screen.height - 500)/2;
  window.open("errortaskDetail.do?fromMonitoringList=true&errorTaskId="+taskId,'','scrollbars,top='+theTop+',left='+theLeft+',width=600,height=500,resizable=yes');
}
function changeState(){
  var selectedItem=document.getElementById("selectedItem").value;
  if(selectedItem.indexOf("f_")==0){
          parent.monitor.flowId=selectedItem.substring(2,selectedItem.length);
  }else{
          parent.monitor.flowId="";
  }

}
</script>
<script language="javascript">
function openActInfo() {
        var selectedItem = document.getElementById('selectedItem').value;
        window.location='/usertasks/activityList.do?isAll=true&openAll=true&selectedItem=' + selectedItem;
}  
  <tr>
      <td rowspan="2" class="header_logo"><img src="images/logo.gif"></td>
      <td class="header_top"><img src="images/header_top.gif"></td>
      <td class="header_bg" align="right">&nbsp;</td>
      <td class="header_bg" colspan="2">&nbsp;</td>
      <td class="header_right"><img src="images/logo_eb.gif"></td>
    </tr>
  <tr>
    <td class="header_menubar_nav">
   
         用户任务列表
   
  
     </td>
      <td class="header_menubar_bg" align="center">&nbsp;</td>
      <td class="header_menubar_right" align="center" nowrap="nowrap"></td>   
    <td class="header_menubar_bg" height="34"><script type="text/javascript">

      oCMenu.makeMenu('Home','','首页','activitywatching.jsp','_top','','','','',cmBGColorOff,cmBGColorOn,cmTxtColor,cmHoverColor,'')

      oCMenu.makeMenu('Task','','任务'+cmTopMenuImage+'','','_top','','','','',cmBGColorOff,cmBGColorOn,cmTxtColor,cmHoverColor,'')
oCMenu.makeMenu('Taskquery','Task','任务查询','/usertasks/taskquery.do','_top','','','','',cmBGColorOff,cmBGColorOn,cmTxtColor,cmHoverColor,'')
oCMenu.makeMenu('Taskhist','Task','任务操作明细','/usertasks/usertaskhist.do','_top','','','','',cmBGColorOff,cmBGColorOn,cmTxtColor,cmHoverColor,'')
oCMenu.makeMenu('Taskhiststudy','Task','任务操作历史分析','/usertasks/taskhiststudy.do','_top','','','','',cmBGColorOff,cmBGColorOn,cmTxtColor,cmHoverColor,'')      
oCMenu.makeStyle(); oCMenu.construct()
</script>
</td>

        <td class="header_menubar_right" align="center" nowrap="nowrap"><SPAN align="right" id="alert" class="bell">&nbsp;</SPAN></td>         
   
  </tr>
</table>
<iframe id="FNotice" name="FNotice"
  style="width:0px; height:0px; border: 0px" src="./checkTimeNotice.jsp"></iframe>
<iframe id="RSIFrame" name="RSIFrame"
  style="width:0px; height:0px; border: 0px" src="./checktaskstate.jsp"></iframe>
<script language="JavaScript">
  var flag;
    if ( document.getElementById )
    {
     flag = document.getElementById( "alert" );
    }
  else if ( document.all )
    {
    flag = document.all["alert"];
    }
    setInterval( "updateClock()", 30*1000 );

  
  
  function updateClock()
  {
              try
            {
                frames["RSIFrame"].location.reload();
            }
            catch( err)
            {}

  }
</script>
</body>
<div class="main" id="main_div">
<form action="activityList.do" method="GET" id="selectForm" >
<table cellpadding="0" cellspacing="0" border="0" class="allFlow">
        <tr>
                <td>
                        <select name="selectedItem" id="selectedItem">
                               
                                        <option value="" selected>所有流程</option>
                               
                               
                               
                                        <option value="p_test" >test</option>
                                        
                                            <option value="f_6" >&nbsp;&nbsp;111</option>
                                           
                        </select>
                        <input type="submit" name="submit" class="btnNormal" value="确定" onClick="return changeState()" class="btn_01"/>
                </td>
               
        </tr>
</table></form>
<div class="dataGridContainer" id="container">

<table class="headtable" id="listTable">
<thead>
<tr>
<th>&nbsp;</th>
<th class="sortable">
<a href="/usertasks/activityList.do?d-49653-o=2&amp;d-49653-p=1&amp;d-49653-s=1&amp;flowId=">实例名</a></th>
<th class="sortable">
<a href="/usertasks/activityList.do?d-49653-o=2&amp;d-49653-p=1&amp;d-49653-s=2&amp;flowId=">名称</a></th>
<th class="sortable">
<a href="/usertasks/activityList.do?d-49653-o=2&amp;d-49653-p=1&amp;d-49653-s=3&amp;flowId=">描述</a></th>
<th class="sortable">
<a href="/usertasks/activityList.do?d-49653-o=2&amp;d-49653-p=1&amp;d-49653-s=4&amp;flowId=">预计开始时间</a></th>
<th class="sortable">
<a href="/usertasks/activityList.do?d-49653-o=2&amp;d-49653-p=1&amp;d-49653-s=5&amp;flowId=">开始执行时间</a></th>
<th class="sortable sorted order1">
<a href="/usertasks/activityList.do?d-49653-o=1&amp;d-49653-p=1&amp;d-49653-s=6&amp;flowId=">状态</a></th>
<th class="sortable">
<a href="/usertasks/activityList.do?d-49653-o=2&amp;d-49653-p=1&amp;d-49653-s=7&amp;flowId=">经办人</a></th></tr></thead>
<tbody>
<tr class="odd" id="6_1">
<td style="width:18px;align:center;"><a href='javascript:change("6_1")'><img border='0' src='images/ready.gif' align='absmiddle' width='16px' height='16px' id='stateIcon'/></a></td>
<td>111</td>
<td><a href="javascript:openTaskWindow('6')">UserTask</a></td>
<td class="desc"> </td>
<td>2007-03-13 14:41</td>
<td> </td>
<td>Ready</td>
<td> </td></tr></tbody></table>
</div>

</div>

<script language="javascript">
if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
        var rheight = 71;
        var rwidth = 18;
        } else {
        var rheight = 72;
        var rwidth = 22;
}
var bodyHeight = document.getElementById("rbody").clientHeight;
var bodyWidth = document.getElementById("rbody").clientWidth;
var mainHeight = bodyHeight-rheight;
if (mainHeight > 0 ){
   document.getElementById("main_div").style.height = mainHeight;
}
var containerHeight = mainHeight-32;
if (containerHeight > 0 ){
   document.getElementById("container").style.height = containerHeight;
}
var mainWidth = bodyWidth-rwidth;
var containerWidth =  bodyWidth-33;
if (mainWidth > 0 ){
        document.getElementById("main_div").style.width = mainWidth;
        document.getElementById("container").style.width = containerWidth;
//        document.getElementById("operateBar").style.width = containerWidth;
}
</script>

</body>
</html>
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2007-3-14 08:29:25 | 只看该作者
使用数据库数据参数化变量有个缺点.就是不能实时获得数据库中已经更新的信息.
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2007-3-14 08:41:15 | 只看该作者

duola1119

我们在手动设置左边界和右边界的时候,打开显示所有的log选项,运行后在replay log输出窗口中查找动态数据的左边界和右边界(越多越好,尽量不要用特殊字符)。
有可能是你把边界搞错啦。
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2007-3-14 10:55:47 | 只看该作者
web_reg_save_param("task_id",
                "LB/IC=window.open(\"taskdetail.do?fromMonitoringList=true&taskid=\"",
                "RB/IC=,'','scrollbars",
                "Search=ALL",
                LAST);
楼上的朋友.你看下我这样取对不对?
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2007-3-14 11:49:46 | 只看该作者
web_reg_save_param("task_id",
                "LB=taskdetail.do?fromMonitoringList=true&",
                "RB=,''/",
                "Search=ALL",
                LAST);

把你的action.c发给我,qq:252034431,主动给我联系
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-8 05:48 , Processed in 0.084095 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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