性能测试工具篇-jmeter实现关联(以及jmeter乱码问题解决)

性能测试工具篇-jmeter实现关联以及jmeter乱码问题解决

关联:上一步返回的数据,下一步能拿到
后置处理器:关联概念的应用器,用于对Sampler发出请求后的服务器响应进行处理,一般用来提取响应中特定的数据

示例:以正则表达式处理器为例

  1. 入口,添加一个正则表达式处理器

在这里插入图片描述
正则表达式配置:

<title>(.+?)</title>         //<title>开头,</title>结尾,

?注意1:这是错误示范,配错了,为了加深记忆,列出来了,下面会有正确示范。
在这里插入图片描述

添加一个访问百度的http请求
在这里插入图片描述
一会儿需要截取的内容:百度一下,你就知道(乱码了,讲完例子解决掉它)
在这里插入图片描述

3.添加一个结果树,观察结果用
在这里插入图片描述
4.添加一个Beanshell 取样器,在控制台把我们正则表达式提出来的值打印一下
代码如下:注意2:这里也是错误示范

System.out.println(${title})

在这里插入图片描述

5.运行后,http执行成功,Beanshell执行失败,这是为什么呢?
在这里插入图片描述
因为Beanshell需要自己定义一下字符串类型: 对应注意2

System.out.println("${title}")   //不定义字符串类型,就会报错。

在这里插入图片描述
6.定义字符串后,Beanshell是执行成功了,但是,正则表达式的取样没有取出来,这是为什么呢?

在这里插入图片描述
因为 正则表达式处理器配置错了,没有定义title这个变量,应该是:
变量名称:title 对应注意1
在这里插入图片描述
7.这下截取是OK的,就是乱码了,下来我解决一下乱码的问题。

在这里插入图片描述
添加一个Beanshell后置处理器,写代码如下:

prev.setDataEncoding("UTF-8") 

运行一下:

在这里插入图片描述
但是发送请求仍是乱码:
在这里插入图片描述
如何处理呢?在百度中找到一个一劳永逸的解决方法:
在jmeter.properties 中加入下面代码,重启即可,其他百度代码试了,不生效,就这个有用。
注意3:有了这个全局配置,可以不需要后置处理器那个动态处理返回结果乱码的配置了,这个配置一劳永逸,只要不重新安装jmeter都一直生效。

sampleresult.default.encoding=UTF-8
String contentEncoding = sampler.getContentEncoding();
if (contentEncoding == null || contentEncoding.length() == 0) {
     contentEncoding = "UTF-8";
   }

重启后运行一下之前脚本,解决了 好开心~
在这里插入图片描述

附加:1.正则表达式知识拓展:
http://www.runoob.com/regexp/regexp-syntax.html
2.解决jmeter请求和响应乱码问题:中:https://www.cnblogs.com/wushujun/p/7771165.html
https://www.cnblogs.com/tangmaokai/p/5830344.html
这两篇文章中的代码要结合起来使用才有效,亲测:

sampleresult.default.encoding=UTF-8
String contentEncoding = sampler.getContentEncoding();
if (contentEncoding == null || contentEncoding.length() == 0) {
     contentEncoding = "UTF-8";
   }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值