Jmeter书中不会教你的(89)

您所在的位置:网站首页 jmeter中的prev Jmeter书中不会教你的(89)

Jmeter书中不会教你的(89)

#Jmeter书中不会教你的(89)| 来源: 网络整理| 查看: 265

有这样一个请求,目的是获取请求url以及获取url中token的值

一/获取请求完整url方法

1)正则表达式

2)采用beanshell,利用方法getUrlAsString()

rh=prev.getUrlAsString(); log.info(rh);

二/需要再灵活一点,获取url中参数值

1)同获取响应头一样,可以采用正则表达式提取器,比如提取token,括号中为提取内容的表达式,可以理解成括号左右实际就是边界值

2)采用边界值提取器,比如提取userId,观察参数左右边界值

3)在beanshell中使用正则表达式提取

还是以这个请求的url为例,需要提取其中的token,观察下参数的特点,在‘=’后面‘&’前面为参数的值,若链接中含有多个参数,写一个公共的方法 getParamByUrl(),将参数名传递进去就可以获取相应参数的值。

import java.util.regex.Matcher; import java.util.regex.Pattern;

url=prev.getUrlAsString(); log.info(url);

public static String getParamByUrl(String url, String name) {     //因为最后一个参数结尾没有&,为了统一规则         url += "&";        String pattern =name + "=(.*?)&";         Pattern r = Pattern.compile(pattern);         Matcher matcher = r.matcher(url);               if (matcher.find()) {               log.info(matcher.group(0));               mch= matcher.group(0).split("=");               log.info("拆分"+Arrays.toString(mch));               log.info(matcher.group(0).split("=")[1]);             return matcher.group(0).split("=")[1].replace("&", "");         } else {             return "";         }     }      String name="token"; v=getParamByUrl(url,name); log.info(v);  

这里需要注意的几点

1.由于url中最后一个参数值没有&,所以需要在结尾加‘&’用来匹配正则

2.name为传进去的参数值,如token,"=(.*?)&"是为匹配‘=’后面任意字符到第一个&为止,特别强调的是表达式中‘?’用法,加了这个问号,表示惰性写法,即尽量减少匹配,这样当第一次看到&符号时就会停止,如果不加这个?,匹配时就会匹配到最后一个&

加问号匹配结果

不加问号匹配结果



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3