如何在 JMeter 中手动设置由 JavaScript 以编程方式设置的 cookie

Mah*_*h S 3 javascript cookies jmeter

我正在测试一个具有以下流程的 Web 应用程序:

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

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

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

在此处输入图片说明

但是登录后的后续请求在其 cookie 数据中没有此访问令牌,因此再次重定向到登录页面。

如何将此令牌设置为用于所有进一步请求的 cookie?

Dmi*_*i T 6

定义变量不会添加 cookie 本身。您需要将 cookie 插入到 Cookie Manager 中才能使其工作,例如:

  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));
    
    Run Code Online (Sandbox Code Playgroud)

用您自己的值替换domain, path, true(代表“安全”)和Long.MAX_VALUE(过期)。

请参阅如何使用 BeanShell:JMeter 最喜欢的内置组件,例如以编程方式操作 cookie。