【问题标题】:JMeter Beanshell script for sharing cookie between threads throws an error用于在线程之间共享 cookie 的 JMeter Beanshell 脚本引发错误
【发布时间】:2016-07-21 10:07:54
【问题描述】:

我正在尝试在 JMeter 中执行以下 Beanshell 脚本,但它会在日志中引发错误。脚本是:

import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = sampler.getCookieManager();
Cookie cookie = new Cookie("ApiSession",props.get("MyCookie"),"","/",false,0);
manager.add(cookie);

日志文件中的错误是:

jmeter.util.BeanShellInterpreter:调用 bsh 方法时出错:eval 源文件:内联评估:``import org.apache.jmeter.protocol.http.control.CookieManager;导入 org.apache。 . . . ''

这行不满意:manager.add(cookie);

如果我将其注释掉,则脚本会运行,但显然不会执行我想要的操作。所以,不确定是什么问题。

看不到完整的调试信息是没有帮助的。 Jmeter 日志仅记录实际错误消息的一部分(如上),并且该消息在中间被剪切。打开调试模式没有帮助。

【问题讨论】:

  • 我看不出sampler.getCookieManager() 会如何工作。在 BeanShell 采样器中,该变量不是已定义的可访问变量之一。您必须将sampler 定义为像这样的变量,它才能工作:HTTPSampler sampler = ctx.getCurrentSampler()
  • @djangofan,当我这样做时,我收到关于缺少 HTTPSampler 的错误:Typed variable declaration : Class: HTTPSampler not found in namespace
  • 嗯,这个帖子是很久以前的了。不确定 Jmeter 3.1+ 中的情况是否相同。

标签: jmeter beanshell cookiemanager


【解决方案1】:

如果您想查看完整的错误消息,您需要在 try/catch 块中包含有问题的语句并将堆栈跟踪打印到 sdtout / log。

How to use BeanShell 指南中特别强调了在线程组之间共享 cookie 的用例。

【讨论】:

  • 感谢有关 try/catch 的提示。会试一试。对于共享 cookie 示例,我也会尝试一下。似乎他们从 HTTP Cookie 管理器中定义了 CookieManager,这与我所做的方式略有不同。会通知是否有效。
  • 如果您没有启用 HTTP Cookie 管理器,那么知道您有错误我并不感到惊讶。顺便说一句,如果您在 jmeter.properties 或命令行中将 CookieManager.save.cookies=true 属性设置为 jmeter -JCookieManager.save.cookies=true,您将能够将 cookie 作为通用 JMeter 变量访问
  • 是的,成功了!将 HTTP Cookie 管理器添加到测试计划修复了它。我认为既然我在 BeanShell 脚本中导入类定义就足以让它工作,但显然不是。非常感谢。
  • @DmitriT,我知道这是一个类似的问题,但请你帮我stackoverflow.com/questions/39919693/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 2017-03-22
相关资源
最近更新 更多