【发布时间】:2021-09-07 16:53:34
【问题描述】:
我有一个要求,我需要运行 JS 文件来获取令牌。 JS 文件引用了浏览器加载时可用的变量,例如“window”、“setTimeout”函数。
但是我需要加载这个 Jmeter 并提取令牌。问题是 JSR233 说它没有引用“window”或“setTimeout”函数(否则在浏览器中可用)。
当我运行它时,我收到以下错误。有什么方法可以让我们在 Jmeter 中处理这些函数。
021-06-24 13:11:08,246 错误 o.a.j.p.j.s.JSR223Sampler:存在问题 JSR223 脚本 JSR223 采样器,消息:javax.script.ScriptException: ReferenceError:“setTimeout”未定义在 /Users/pprabhak/performance/apache-jmeter-5.4.1/bin/BehaviorAnalytics-2.2.0.min.js 在第 12 行 javax.script.ScriptException: ReferenceError: “setTimeout”未定义在 /Users/pprabhak/performance/apache-jmeter-5.4.1/bin/BehaviorAnalytics-2.2.0.min.js 在第 12 行 jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:477) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:433) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.api.scripting.NashornScriptEngine$3.eval(NashornScriptEngine.java:521) ~[jdk.scripting.nashorn:?] 在 javax.script.CompiledScript.eval(CompiledScript.java:89) ~[java.scripting:?] 在 org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:217) ~[ApacheJMeter_core.jar:5.4.1] 在 org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:72) [ApacheJMeter_java.jar:5.4.1] 在 org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638) [ApacheJMeter_core.jar:?] 在 org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:?] 在 org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:?] 在 org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:?] 在 java.lang.Thread.run(Thread.java:834) [?:?] 引起:jdk.nashorn.internal.runtime.ECMAException: ReferenceError:“setTimeout”未定义在 jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.objects.Global.noSuchProperty(Global.java:1616) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.scripts.Script$Recompilation$21736$268435452$BehaviorAnalytics_2_2_0_min$cu10$restOf.VAAP$:split-2(/Users/pprabhak/performance/apache-jmeter-5.4.1/bin/BehaviorAnalytics-2.2.0. min.js:12) ~[?:?] 在 jdk.nashorn.internal.scripts.Script$重新编译$17386$73052$BehaviorAnalytics_2_2_0_min.VAAP(/Users/pprabhak/performance/apache-jmeter-5.4.1/bin/BehaviorAnalytics-2.2.0.min.js:1) ~[?:?] 在 jdk.nashorn.internal.scripts.Script$Recompilation$17388$BehaviorAnalytics_2_2_0_min$cu1$restOf.:program(/Users/pprabhak/performance/apache-jmeter-5.4.1/bin/BehaviorAnalytics-2.2.0.min.js:1 ) ~[?:?] 在 jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:655) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:527) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.runtime.Context.evaluateSource(Context.java:1438) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.runtime.Context.load(Context.java:962) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.objects.Global.load(Global.java:1720) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.scripts.Script$重新编译$17383$^eval_/0x0000000800b68040.:program(:3) ~[?:?] 在 jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:655) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:527) ~[jdk.scripting.nashorn:?] 在 jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:428) ~[jdk.scripting.nashorn:?] ... 9 更多 2021-06-24 13:11:08,249 信息 o.a.j.t.JMeterThread:线程已完成:线程组 1-1
【问题讨论】:
-
这可能是因为 JMeter JSR 223 Sampler 不是 Web 浏览器环境。像
window这样的对象被浏览器暴露了
标签: jmeter jmeter-5.0