在这个代码中我们需要关联的正文是admin,验证的部分在于<em>0</em>,这里的0代表没有回复,后面的2代表两次阅读。关联的难度在于如果用回帖数作为左边界那么右边界中的阅读数是动态数据。如果用回帖数作为右边界那么左边界中的发帖时间和用户uid是动态数据,导致这个关联在以前的写法中很难实现,必须要扩展关联后使用strtok来分离。现在使用正则表达式关联这个问题就非常简单了,代码如下:
web_reg_save_param_regexp( "ParamName=temp", "RegExp=<em>0</em>.*\r\n.*username=(.*)\">.*</a><p>", "Ordinal=1", SEARCH_FILTERS, LAST); |
这里的过滤方式是使用<em>0</em>作为左边界然后拼接任意内容接回车换行符,再接任意字符至username=处,关联这串内容的右侧到">位置后面接任意字符,再接</a><p>。通过这个关联就可以得到未回帖的发帖人名了,另外一种使用回帖数为0作为右边界的写法为:
web_reg_save_param_regexp( "ParamName=temp", "RegExp=uid=.*\">(.*)</a><p>.*\r\n.*<em>0</em>", "Ordinal=1", SEARCH_FILTERS, LAST); |
刚开始写的时候大家会困惑在正则表达式的编写上,多多尝试(注意\r\n\b回车符、换行符及空格这是开始最难处理的东西),并且合理应用常见的正则表达式验证工具,就可以逐渐上手,成为你关联应用时的神器。
如果想要获得一个没有回复帖子的帖子编号,正则表达式为:
web_reg_save_param_regexp( "ParamName=topicid", "RegExp=ajax_(.*)\" class.*\r\n.*\r\n.*\r\n.*<em>0</em>", "Ordinal=1", SEARCH_FILTERS, LAST); |
换成strtok的写法那么就要这样写了:
char tokstr[2000]; extern char * strtok(char * string, const char * delimiters ); char * token; web_reg_save_param("string", "LB=a_ajax_", "RB=<em>0</em>", "Ord=1", "Search=NoResource", LAST); //请求部分略 strcpy(tokstr,lr_eval_string("{string}")); token = (char *)strtok(tokstr,"\""); lr_output_message(token);//输出处理后得到的帖子编号 |
(未完,精彩待续)
本文选自《51Testing软件测试作品系列》之十——《性能测试进阶指南——LoadRunner11实战》。
本站经电子工业出版社和作者的授权,近期将进行部分章节的连载,敬请期待!
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关阅读: