首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSR223脚本JSR223示例中的问题,消息: javax.script.ScriptException: ReferenceError:"setTimeout“未定义

JSR223脚本JSR223示例中的问题,消息: javax.script.ScriptException: ReferenceError:"setTimeout“未定义
EN

Stack Overflow用户
提问于 2021-06-24 07:49:06
回答 1查看 833关注 0票数 1

我需要运行JS文件才能获得令牌。JS文件引用诸如"window“、"setTimeout”等变量,这些函数在浏览器加载时可用。

但是我需要加载这个J度表,然后提取令牌。问题是JSR233说它没有引用“窗口”或"setTimeout“函数(否则浏览器中就可用了)。

当我运行它时,我会得到下面的错误。有什么办法能让我们在Jmeter中得到这些函数的句柄吗?

021-06-24 13:11:08,246错误o.a.j.p.j.s.JSR223Sampler: JSR223脚本JSR223示例程序中的问题消息: /Users/pprabhak/performance/apache-jmeter-5.4.1/bin/BehaviorAnalytics-2.2.0.min.js中没有定义javax.script.ScriptException: ReferenceError:"setTimeout“在第12行中没有定义javax.script.ScriptException: ReferenceError:"setTimeout”在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 at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:72) ApacheJMeter_java.jar:5.4.1 at 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.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__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$Recompilation$17386$73052$BehaviorAnalytics_2_2__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__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$Recompilation$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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-24 08:00:48

Window对象与web浏览器密切相关,您将无法在JSR223测试元素中使用。

处理此问题的方法有两种:

  1. 使用WebDriver采样器插件,它:
代码语言:javascript
复制
- has possibility to execute JavaScript via [JavascriptExecutor](https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html)
- store the result into [JMeter Variables](https://jmeter.apache.org/usermanual/functions.html) via `WDS.vars` shorthand to [JMeterVariables](https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html) class instance
  1. 在JMeter测试元素中复制JavaScript文件的逻辑(请注意JSR223测试元素),如果脚本需要一些参数,您应该能够使用JMeter的后处理器从先前的响应中获得它们
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68111609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档