-
jmeter正则表达式提取token
- 名称:对该 Cookie管理器的自定义概述
- 注释:对该 Cookie管理器的详细描述
- 每次反复清除Cookies?:选择后,则每次线程组运行时,都会清除 cookie。PS:若是手动添加的cookie,则不会被清除。
- Implementation:履行的协议。
- Cookie Policy:Cookie的管理策略。有如下几种可选项:
- compatibility:推荐选择此种策略。这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按照标准来实现的。如果你遇到了解析 Cookies 的问题,你就可能要用到这一个规范。有太多的web站点是用CGI脚本去实现的,而导致只有将所有的 Cookies 都放入 Request header 才可以正常的工作。这种情况下最好设置 http.protocol.single-cookie-header 参数为 true。
- rfc2109:是HttpClient使用的默认Cookies协议。
- rfc2965:定义了版本2并且尝试去弥补在版本1中 Cookie 的 RFC2109 标准的缺点。规定 RFC2965 最终取代 RFC2109 发送 RFC2965 标准 Cookies 的服务端,将会使用 Set-Cookie2 header 添加到 Set-Cookie Header 信心中,RFC2965 Cookies 是区分端口的。
- ignorecookies:此规格忽略所有 Cookie。被用来防止 HttpClient 接受和发送的 Cookie。
- netscape:是最原始的 Cookies 规范,同时也是 RFC2109 的基础。尽管如此,还是在很多重要的方面与 RFC2109 不同,可能需要特定服务器才可以兼容。
- default:默认。
步骤一:在需要获取token的接口上,添加正则表达式提取器
说明:
(1) Apply to:应用范围
Main sample and sub-samples:匹配范围包括当前父取样器并覆盖至子取样器
Main sample only:匹配范围为当前父取样器
Sub-samples only:仅匹配子取样器
JMeter Variable:支持对JMeter变量进行匹配
(2)要检查的响应字段:针对响应数据的不同部分进行匹配
主体:响应数据的主体部分,排除Header部分;Http协议返回请求的主体部分就是Body
Body:针对替换了转义码的Body部分
Body as a Document:返回内容作为一个文档进行匹配
信息头:只匹配信息头部分的内容
URL:只匹配URL链接
响应代码:匹配响应代码,比如HTTP协议返回码200代表成功
响应信息:匹配响应信息,比如处理成功返回"成功"字样,或者"OK"字样
(3)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
(4)正则表达式:
():括起来的部分就是要提取的。
.:匹配除换行符以外的任意字符+:重复一次或更多次
?:重复零次或一次,在找到第一个匹配项后停止
*:重复零次或更多次
(5)模板:正则表达式可以设置多个模板进行匹配,在此只可指定运用哪个模板,模板自动编号,$1$指第一个模板,$2$代表第2个模板,依此类推。$0$代表全文匹配
(6)匹配数字:在匹配时往往会出现多个值匹配的情况,0代表随机取值;不同模板可能会匹配一组值,那么可以用匹配数字来确定取这一组值中哪一个;负数取所有值,通常情况下填0
(7)缺省值:如果没有匹配到,那可以指定一个默认值
步骤二:使用获取到的token值。添加HTTP Cookie管理器
说明:
6.存储在Cookie管理器中的Cookie
名称:参数的名称,如本例中名称是 _security_token
值:参数的值,如本例中值是从步骤一的正则表达式中的${token}
域:使用到该cookie的域名,如本例中则是多图模板这个接口的域名
运行结果:
实践过程中遇到的问题:
1、
2、token的值拿到了,但是线程执行失败,把请求方法由Get改成Post就成功了
3、token的值拿到了,请求方法也是正确的,线程执行失败,把代理去掉就成功了