【问题标题】:How do I get rid of the error 'Typed variable declaration : Error in method invocation: Method getCookieManager() not found..'如何摆脱错误“类型变量声明:方法调用错误:找不到方法 getCookieManager() ..”
【发布时间】:2020-06-05 14:48:16
【问题描述】:

我在 setUpThread 组中有一个 BeanShell 后处理器来捕获 cookie,并在主线程(作为第一步)中有一个 Beanshell 预处理器来使用在之前的 setUpThread 中捕获的 cookie,例如:

如果我从 JSR223 或 Beanshell 采样器添加 2 行采样器,尽管在支付线程的 UDV 部分中声明了 CFLAG,但我收到以下错误:

错误 o.a.j.u.BeanShellInterpreter:调用 bsh 方法时出错:eval 源文件:内联评估:import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache. . . . '' : Typed variable declaration : Error in method invocation: Method getCookieManager() not found in class'org.apache.jmeter.protocol.java.sampler.JSR223Sampler' 2020-06-05 15:37:44,168 WARN o.a.j.m.BeanShellPreProcessor: Problem in BeanShell script. org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of:import org.apache.jmeter.protocol.http.control.CookieManager;导入 org.apache。 . . . '':类型变量声明:方法调用错误:方法 getCookieManager() not found in class'org.apache.jmeter.protocol.java.sampler.JSR223Sampler'

【问题讨论】:

  • 此错误出现在任何后续采样器中,例如 JSR223/BSH/.. 但它不会停止脚本(意味着它不是显示停止器)

标签: jmeter


【解决方案1】:

您的 Beanshell PreProcessor(和 PostProcessor)的位置违反了JMeter Scoping Rules,您收到的错误是由于:

  • 根据前处理器和后处理器的范围,它们被应用于给定线程组中的所有采样器
  • 其中一个采样器是 JSR223 Sampler,它没有 HTTP Cookie 管理器的实例(只有 HTTP Request 采样器有)

因此,解决方案是将前置/后置处理器作为 HTTP 请求采样器的子代,这样错误就会消失。

还要注意 starting from JMeter 3.1 you should be using JSR223 Test Elements and Groovy language 用于编写脚本,因此请考虑摆脱这些 Beanshell 测试元素

【讨论】:

  • 谢谢,德米特里。我在之前的 HTTP post 04 LA 步骤中包含了 FLAG RESET 采样器作为 BSPost 处理器,并且它有效。但它在 BS 采样器中进一步抛出相同的错误,那么我如何在 HTTP 请求之间操作/处理/编写代码?
  • 我通过编写一个 BS 预处理器将 cookie 从一次性线程组(设置)带到主线程组(支付)。带它的最佳方式是什么?
  • 我正在尝试通过在 HTTP POST 之间放置 JSR223 采样器来进行一些处理(设置后续 IF 的标志和路径),但由于它没有 HTTP Cookie 管理器的实例仍在抛出此错误,所以我想知道如何在没有此错误的情况下进行处理?有人可以给点建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多