在JMeter中的线程组之间共享cookie值


问题内容

我有以下设置:

Thread A
  - Http Cookie Manager
  - Login Page
Thread B
  - Http Cookie Manager
  - Page to hit
  - Another page to hit

我一直在尝试将登录页面中设置的cookie设置为全局属性,然后将其设置为线程B中的Http
Cookie管理器。但是,我一直无法正确使用它。我已经尝试了BeanShell PostProcessors之类的方法,但无法正确设置它。

===添加以澄清===

我无法在线程B中拥有登录页面和cookie管理器的原因是由于所需的行为。目标是登录并获取Cookie,然后一遍又一遍地打出一堆页面。这使我们能够登录一次,然后模拟该用户的大量点击。通过将cookie管理器和登录页面置于同一线程中,用户将登录,一次打一堆页面,然后登录并再次执行。


问题答案:

我的问题应该更清楚一些,但我们已解决此问题。这是我们的解决方案:

Http Cookie Manager
Thread A - 1 Thread - 1 Loop Count
  - Login Page
      - BeanShell PostProcessor
            - props.put("MyCookie","${COOKIE_<INSERT ACTUAL COOKIE NAME>}");
Thread B - 50 Threads - Infinite Loop Count
  - BeanShell PreProcessor 
      - import org.apache.jmeter.protocol.http.control.CookieManager;
        import org.apache.jmeter.protocol.http.control.Cookie;
        CookieManager manager = sampler.getCookieManager();
        Cookie cookie = new Cookie("<INSERT ACTUAL COOKIE NAME>",props.get("MyCookie"),"<INSERT DOMAIN NAME>","<INSERT COOKIE PATH>",false,0);
        manager.add(cookie);
  - Page to hit
  - Another page to hit, repeat as needed

然后需要对JMeter进行配置更改:

打开jmeter.properties文件,然后转到“ CookieManager.save.cookies = false”行,并将其设置为true。

这将允许第一个线程中的登录cookie在第二个线程中使用。