JMeter2.8中org.mozilla.javascript.EvaluatorException: missing ; before statement (<cmd>#1)解决方案

JMeter2.8中,选择【运行】->【启动】后脚本没有执行,后台jmeter.log出现如下错误:
2013/02/05 17:26:41 ERROR - jmeter.control.IfController: If コントローラ(帐票ダウンロード): error while processing [${FLG} == 1]
 org.mozilla.javascript.EvaluatorException: missing ; before statement (<cmd>#1)
at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:109)
at org.mozilla.javascript.DefaultErrorReporter.error(DefaultErrorReporter.java:96)
at org.mozilla.javascript.Parser.addError(Parser.java:230)
at org.mozilla.javascript.Parser.addError(Parser.java:208)
at org.mozilla.javascript.Parser.reportError(Parser.java:265)
at org.mozilla.javascript.Parser.reportError(Parser.java:252)
at org.mozilla.javascript.Parser.reportError(Parser.java:245)
at org.mozilla.javascript.Parser.autoInsertSemicolon(Parser.java:1109)
at org.mozilla.javascript.Parser.statementHelper(Parser.java:1086)
at org.mozilla.javascript.Parser.statement(Parser.java:943)
at org.mozilla.javascript.Parser.parse(Parser.java:568)
at org.mozilla.javascript.Parser.parse(Parser.java:506)
at org.mozilla.javascript.Context.compileImpl(Context.java:2401)
at org.mozilla.javascript.Context.compileString(Context.java:1367)
at org.mozilla.javascript.Context.compileString(Context.java:1356)
at org.mozilla.javascript.Context.evaluateString(Context.java:1108)
at org.apache.jmeter.control.IfController.evaluateCondition(IfController.java:110)
at org.apache.jmeter.control.IfController.next(IfController.java:167)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:220)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:270)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.GenericController.reInitializeSubController(GenericController.java:271)
at org.apache.jmeter.control.IfController.next(IfController.java:178)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:211)
at org.apache.jmeter.control.GenericController.next(GenericController.java:172)
at org.apache.jmeter.control.LoopController.next(LoopController.java:108)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:220)
at org.apache.jmeter.control.GenericController.next(GenericController.java:172)
at org.apache.jmeter.control.LoopController.next(LoopController.java:108)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:86)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
at java.lang.Thread.run(Unknown Source)



初步分析应该是在if控制器中的条件没满足导致的,所以查看条件表达式:${FLG} ==1,很明显应该是FLG没有取得值,所以再查看用户参数设置:
FLG    ${__CSVRead(C:\csv\gw_g\flg.csv,0)}
,经检查也没有任何问题。
flg.csv内容:1
查了很久,没找到原因,只好去找帮助文档了,在用户参数的文档中有如下的内容:

18.7.5 User Parameters

Allows the user to specify values for User Variables specific to individual threads.
User Variables can also be specified in the Test Plan but not specific to individual threads. This panel allows you to specify a series of values for any User Variable. For each thread, the variable will be assigned one of the values from the series in sequence. If there are more threads than values, the values get re-used. For example, this can be used to assign a distinct user id to be used by each thread. User variables can be referenced in any field of any jMeter Component.
The variable is specified by clicking the Add Variable button in the bottom of the panel and filling in the Variable name in the 'Name:' column. To add a new value to the series, click the 'Add User' button and fill in the desired value in the newly added column.
Values can be accessed in any test component in the same thread group, using the function syntax : ${variable}.
See also the CSV Data Set Config element, which is more suitable for large numbers of parameters
Control Panel
Parameters
AttributeDescriptionRequired
NameDescriptive name for this element that is shown in the tree.No
Update Once Per IterationA flag to indicate whether the User Paramters element should update its variables only once per iteration. if you embed functions into the UP, then you may need greater control over how often the values of the variables are updated. Keep this box checked to ensure the values are updated each time through the UP's parent controller. Uncheck the box, and the UP will update the parameters for every sample request made within its scope .Yes

最主要的就是关于属性【Update Once Per Iteration】,如果这个选择没有勾上,表示每执行一次sample就会更新一次参数,而我的flg.csv文件里就1行,所以当执行线程组是将flg设置为1了,再执行if控制器时将重新更新flg,此时flg的值将被更新问null,所以条件${FLG} ==1就不满足,执行不了下面的脚本了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章