2016-01-14 45 views
1

编程设置我测试具有以下流的Web应用程序:如何手动设置在JMeter的一个cookie是由JavaScript

  1. 用户登录
  2. 成功登录,访问令牌发放。
  3. 登录后的每个请求都有访问令牌来获取资源。

在我的JMeter测试计划中,我添加了一个cookie管理器,并且可以从登录请求的响应头中提取此访问令牌。我想将此访问令牌设置为测试计划的Cookie。

我在BSF PostProcessor中提取访问令牌后添加了这个:vars.put('COOKIE_access_token',actual_token);,它被视为调试采样器中的一个cookie变量。

enter image description here

但登录后的后续请求没有在他们的Cookie数据访问令牌,并因此再次被重定向到登录页面。

如何将此令牌设置为将用于所有其他请求的cookie?

回答

2

定义变量不会添加cookie本身。你需要插入的cookie到Cookie管理,使这项工作,如:

  1. 添加Beanshell PreProcessor作为失败
  2. 将下面的代码放入预处理器的“脚本”区域的请求的小孩:

    import org.apache.jmeter.protocol.http.control.Cookie; 
    
    sampler.getCookieManager().add(new Cookie("access_token", "actual_token", "domain", "path", true, Long.MAX_VALUE)); 
    

更换domainpathtrue(代表 “安全”)和Long.MAX_VALUE(到期)用自己的价值观。

请参阅How to Use BeanShell: JMeter's Favorite Built-in Component以编程方式操作cookie的示例。

+0

谢谢德米特里T.它的工作。尽管在插入cookie时,我必须给出负值(-1)作为到期时间。任何非负值都不起作用。 再次感谢! –