正则表达式

当前位置:正则表达式 > jmeter

jmeter正则表达式提取token

步骤一:在需要获取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管理器

 

 说明:

  1. 名称:对该 Cookie管理器的自定义概述
  2. 注释:对该 Cookie管理器的详细描述
  3. 每次反复清除Cookies?:选择后,则每次线程组运行时,都会清除 cookie。PS:若是手动添加的cookie,则不会被清除。
  4. Implementation:履行的协议。
  5. 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:默认。

      6.存储在Cookie管理器中的Cookie

      名称:参数的名称,如本例中名称是  _security_token

      值:参数的值,如本例中值是从步骤一的正则表达式中的${token}

      域:使用到该cookie的域名,如本例中则是多图模板这个接口的域名

 

运行结果:

 

实践过程中遇到的问题:

1、

 

2、token的值拿到了,但是线程执行失败,把请求方法由Get改成Post就成功了

3、token的值拿到了,请求方法也是正确的,线程执行失败,把代理去掉就成功了


相关文章
苏ICP备2022026517号-2  |   苏公网安备 32081202000316号
淮安先皓网络科技有限公司 © 版权所有  联系我们