Jmeter书中不会教你的(89) |
您所在的位置:网站首页 › jmeter中的prev › Jmeter书中不会教你的(89) |
有这样一个请求,目的是获取请求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 |