JMeter/Beanshell "Error invoking bsh method: eval Sourced file:"

标签 jmeter beanshell

我在 JMeter 中遇到问题,我收到此错误

2014/08/14 14:13:26 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration 
2014/08/14 14:13:26 WARN  - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration 

我不知道出了什么问题,否则代码似乎可以正常工作。谁能给我一些建议?

这是有问题的代码块:
String RequestUrl = vars.get("RequestUrl");
String[] params = RequestUrl.split("\\?");
String RequestTask = params[1].split("\\&")[1].split("=")[1];
System.out.println(RequestTask);
vars.put("RequestTask",RequestTask);

可能应该提到代码位于后处理器中,它与“RequestUrl”的 Xpath 提取器配对

编辑以包括整个错误

最佳答案

我没有看到您的 URL 以及 XPath 查询返回什么,但无论如何您的 URL 解析逻辑看起来很不稳定,因为它强烈依赖于参数顺序和存在,并且将来可能会在请求 URL 更改(即额外参数或更改)的情况下咬回您参数顺序或编码的东西等。

请参阅以下内容以供引用:

import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import java.net.URI;
import java.util.List;

String url = vars.get("RequestUrl");

List params = URLEncodedUtils.parse(new URI(url), "UTF-8");

for (NameValuePair param : params) {            
    if (param.getName().equals("put your actual param name here")) {                 
        vars.put("RequestTask", param.getValue());
    }
}

也值得一试How to use BeanShell: JMeter's favorite built-in component以获取故障排除提示。一般来说,本地化错误日志应该像这样使用:
log.info("something");
log.error("something else");

因此,如果您在日志中没有看到消息,那么 Beanshell 就无法执行该行并且在上方某处失败。

Beanshell 错误消息也不是很丰富,我在我的脚本中使用以下结构:
try {
    //script logic here
}

catch (Throwable ex) {
    log.error("Failed to do this or that", ex);
}

因此可以在 jmeter.log 文件中读取错误 stracktrace。

希望这可以帮助。

关于JMeter/Beanshell "Error invoking bsh method: eval Sourced file:",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314140/

相关文章:

testing - 断言监听器在 jmeter 中不起作用?

javascript - 错误 : Jmeter: Typed variable declaration : Class or variable not found: org. openqa.selenium:在第 4 行

java - JMeter 不会因 BeanShell 错误而失败

JMeter - 从 BeanShell 预处理器中停止线程

java - 同时将多个数据推送到 influxdb 时丢失数据。?

java - 如何在java中比较两个不同的JSON响应结构?

unit-testing - 使用 jmeter 读取 csv(从 x 开始)

java - jboss 无法处理超过 3000 个请求

java - JMeter Beanshell 整数错误

beanshell初学者-如何检查variable.toString中是否不包含值?