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就不滿足,執行不了下面的腳本了。

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