51Testing丛书:性能测试进阶指南—LoadRunner 11实战(8)

发表于:2012-5-15 11:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈霁    来源:51Testing软件测试网原创

  3.7.6  关联函数web_reg_save_param_regexp详解

  在介绍这个函数前先来处理一种情况。前面关联的左右边界都是静态的,如果左右边界是动态的,并且系统返回的id是不定长度的,那么如何使用关联函数将该id取出呢?这个问题在现实情况中会经常遇到,仅仅通过一个关联函数是无法处理的,这个时候还需要使用一个函数strtok()来进行字符内容切割。

  strtok()函数的作用是通过某个分隔符来切分内容的。

  例如:

char city[1000];

char * token;

//这个函数是扩展的声明

extern char * strtok(char * string, const char * delimiters ); 

strcpy(city,"this is shanghai!");

token = (char *)strtok(city," "); 

lr_error_message(token);

token = (char *)strtok(NULL," "); 

lr_error_message(token);

token = (char *)strtok(NULL," "); 

lr_error_message(token);

  通过这个函数可以得到3个字符:this、is、shanghai。通过空格来分隔字符串,可以得到第一个符合该条件的内容,如果需要继续分隔就使用strtok(NULL," ");语句。如果关联出来的内容sessionid是变动长度的,如"sessionid=54321123&action=work",则如何获得这个变动长度的sessionid呢?使用下面的代码即可解决:

char temp[100];

char * token;

extern char * strtok(char * string, const char * delimiters ); 

lr_save_string("sessionid=54321123&action=work","param");

strcpy(temp,lr_eval_string("{param}"));//取出参数值,并且赋值给变量temp

 token = (char *)strtok(temp,"&");//使用&符号作为分隔符

  这个时候token="sessionid=54321123",并且是根据&符号分隔的,所以id的长度可以任意变化,而token中的sessionid可以通过关联的时候Save Offset进行处理,或者使用strtok()函数对等号再次进行处理。

  而在LR11中提供了web_reg_save_param_regexp正则表达式关联,上面的写法也可以退休了。打开Add Step添加步骤,选择web_reg_save_param_regexp函数,打开设置窗口,如图3.127所示。

图3.127  添加web_reg_save_param_regexp函数

  在这个函数中关键就是在Regular Expression的写法上,在前面XML参数的lr_xml_find函数中我们提到过正则表达式的写法,在这里的写法唯一区别在于需要关联返回的内容需要用()圆括号标记。例如,这里的read(.*)\.php就是指所有符合read开头.php结尾中间的任何内容都关联保存到参数temp中,这里的\是转义符,确保.号能够正确地当做普通字符来匹配。

  在Phpwind中如果我们要关联一个没有被回复过的帖子的发帖人是谁,这个在以前是比较难于实现的,我们先来看看一个帖子的HTML代码:

<tr class="tr3">

            <td class="icon tac"><input type="checkbox" autocomplete="off" name="tidarray[]" id=tid_1884 value="1884" onclick="postManage.show 
('postbatch','a_ajax_1884')" /><a title="开放主题href="read.php?tid=1884" target="_blank"><img src="images/wind85/thread/topicnew. 
gif" align="absmiddle"></a>

</td>

            <td class="subject" id="td_1884">

<a href="read.php?tid=1884" name="readlink"  id="a_ajax_1884" class= "subject_t f14">需要使用正则表达式关联的例子</a>    

<img src="images/wind85/file/new.gif" align="absmiddle" title="新帖标志" alt="新帖标志" />

            </td>

            <td class="author"><a href="u.php?uid=1">admin</a><p>2011-10-05 </p></td>

            <td class="num"><em>0</em>/2</td>

            <td class="author"><a href="u.php?username=admin">admin</a><p> <a href="read.php?tid=1884&page=e#a" title="2011-10-05 13:43">4秒前 <span>
»</span></a></p></td>

        </tr>

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号