带有Beanshell错误消息

时间:2013-02-16 18:06:50

标签: regex jmeter beanshell

我一直在尝试使用以下正则表达式提取器

Reference Name: FMSFlightPlan
Regular Expression: (?s)<FMSFlightPlan>(.*?)</FMSFlightPlan>
Template: $1$
Match No. 1

匹配XML中两个FMSFlightPlan标记之间的字符串(标记之间的行数变化,因此(?s)建立dotall模式)

<FMSFlightPlan>
6500
AN NTEST/GL 
- FPN/FN/RP:DA:LEMG:AA:LEXJ:F:BLN,N38092W003375.UN865. 
BUGIX,N42215W003381.R753.EMANU,N42575W003469 
 </FMSFlightPlan>

几个测试应用程序告诉我,我的正则表达式是正确的。但是,当我尝试使用Beanshell Assertion打印出捕获的字符串时,我收到错误消息:

  

断言错误:是的       断言失败:错误       断言失败消息:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval源文件:内联评估:``import java.io. *; //将数据结果写出到文件outfile =“/ Users / Dani ...”'令牌解析错误:第12行第380行的词汇错误。遇到:“\ n”(10),之后:“\” 3811 \ tYes \ tAAR \ tSTN \ t835 \ t \ t $ B738 \ tfp,nradps,art,CCAAN,EXCD,wp00,p00 \ t37919 \ ta0 \ ti \ t10 \ t0 \ t3 \ t0 \ t \ t14 \ t 25 / M \ t0000ADF \ t140785 \ t133806 \ t006979 \ t01:15:00 \ t0484 \ t360 \ t0379 \ t360 \ t0112 \ t 000932 \ tP00 \ t007115 \ t2013-02-13T21:23:00Z \ t2013-02-14T08: 35:00 + 00:00 \ t000837 \ T00:10:00 \ t000000 \ T00:00:00 \ t000837 \ T00:10:00 \ t000000 \ t000000 \ t000000 \ T00:00:00 \ t000000 \ T00:00: 00 \ t“的

因此,似乎提取器返回一个字符串,但Beanshell Assertion不会将其识别为变量。为什么在建立dotall模式后会出现这种情况?某处有逃避错误吗?我也不明白错误信息的含义是什么

Encountered: "\n" 

因为正在解析的文本中没有\ n个字符。

我考虑过使用XPath提取器而不是正则表达式提取器,但是听说在涉及大量操作或线程时这不是最佳的。

1 个答案:

答案 0 :(得分:1)

(?s) - 表示单行,对吗?然后击中\ n这是一个新的线路信号。这可能是导致错误的原因。它不期待一个新的线字符。

你能使用常规的响应断言吗?我想你可以使用模式中的正则表达式进行测试。