Jmeter中传递cookie值

作者: 张小Di | 来源:发表于2019-03-22 14:57 被阅读1次

    场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢?

    在线程组下面之直接添加HTTP Cookie管理器,Jmeter会自动将线程组下面的cookie值保存并在此线程组中其他API中传递的,首先,要确保jmeter.properties中CookieManager.save.cookies=true
    image.png

    那么,跨线程间怎么传递cookie?

    获取参数值->设置为全局变量->调用参数,下面详细介绍一下操作步骤

    方法一:
    1. 通过抓包工具(Fiddler,Charles,network)等可知道cookie是在响应Header或者响应文本中返回可客户端的


      响应信息
    1. 添加正则表达式获取cookie值,需要检查的响应字段需要选择【信息头】
    Set-Cookie: PHPSESSID=(.*); path=/; HttpOnly
    

    其中,
    引用名称:数据名称
    正则表达式:参看正则式将匹配的数据提取出来
    模板:表示使用提取到的第几个值,如1:表示取第1个
    匹配数字:0代表随机取值,1代表全部取值
    缺省值:如果正则表达式未匹配到,即使用该值

    正则式提取器
    1. 添加BeanShell PostProcessor,并将正则表达式提取器中的值设置为全局变量
    ${__setProperty(newPHPSESSID,${PHPSESSID},)};
    
    BeanShell PostProcessor

    同时,也可通过下面方式在BeanShell PostProcessor设置全局变量:

    import org.apache.jmeter.util.JMeterUtils; 
    JMeterUtils.setProperty("Cookie", "${PHPSESSID}");
    
    image.png
    1. 在其他需要调用的线程下添加HTTP Cookie管理器,并取出环境变量值
    ${__property(newPHPSESSID,,)}
    
    HTTP Cookie管理器

    同样,亦可通过添加前置BeanShell PreProcessor处理器,并通过代码取出环境变量,并将它设置为局部变量;而后在线程组下方添加HTTP Cookie管理器并调用此参数

    import org.apache.jmeter.util.JMeterUtils;
    String value = JMeterUtils.getProperty("Cookie");
    vars.put("Cookie",value);
    
    BeanShell PreProcessor
    HTTP cookie管理器
    1. 最后运行线程组就ok了,接口A请求头中有cookie信息了


      结果树
    方法2:

    除了步骤3中使用的配置元件与方法1不一样外,整体操作类似
    步骤3:在其他需要调用的线程下添加HTTP信息头管理器,并取出环境变量值


    image.png

    参考文档:
    Jmeter如何保持cookie,让所有请求都能用同一个cookie,免去提取JSESSIONID
    Jmeter获取Cookie并传递到下一个线程---跨线程后cookie找不到了
    jmeter手动添加cookie及线程间cookie共享的2种方法
    jmeter学习指南之深入分析跨域传递cookie

    相关文章

      网友评论

        本文标题:Jmeter中传递cookie值

        本文链接:https://www.haomeiwen.com/subject/youcvqtx.html