提取javascript变量并传递给下一个Jmeter请求

提取javascript变量并传递给下一个Jmeter请求,jmeter,Jmeter,脚本标记中的响应数据如下所示 var csrfParam = "SKtEMgZtO0H8EYHkAZIQ4tcS5bC8jKrD=y2G5Of06jgHbkNdHNleFKiXoBMC62veD"; var securityTokenName = "SKtEMgZtO0H8EYHkAZIQ4tcS5bC8jKrD"; var securityTokenValue = "y2G5Of06jgHbkNdHNleFKiXoBMC62veD"; 我使用正则表达式提取器,如下所示: R

脚本标记中的响应数据如下所示

var csrfParam = 
      "SKtEMgZtO0H8EYHkAZIQ4tcS5bC8jKrD=y2G5Of06jgHbkNdHNleFKiXoBMC62veD";
var securityTokenName =  "SKtEMgZtO0H8EYHkAZIQ4tcS5bC8jKrD";
var securityTokenValue =  "y2G5Of06jgHbkNdHNleFKiXoBMC62veD";
我使用正则表达式提取器,如下所示:

Reference name :  MYREF 
Regular Expression : securityTokenName ="(.+?)" securityTokenValue="(.+?)"
Template :           $1$$2$
我将在下一个Jmeter请求中访问此变量以构建URL:

${MYREF_g1}  
${MYREF_g2}
希望获得MYREF_g1=SKtEMgZtO0H8EYHkAZIQ4tcS5bC8jKrD
MYREF_g2=y2G5Of06jgHbkNdHNleFKiXoBMC62veD
但这是行不通的


任何帮助都将不胜感激

看起来您误解了组和模板是什么

依照

模板。用于根据找到的匹配项创建字符串的模板。 这是一个带有特殊元素的任意字符串,用于引用组 在正则表达式中。引用组的语法为: “$1$”表示第1组“$2$”表示第2组,等等。$0$表示 无论整个表达式匹配什么。所以,如果你有回应的话 “经济学”一词和正则表达式搜索(ec)(经济学)以及 将模板$2$$1$应用到您将收到的输出变量中 “节拍”

因此,您的正则表达式应该如下所示:

var securityTokenName = "(.+?)"; var securityTokenValue = "(.+?)";
所以

  • securityTokenName将存储在JMeter变量
    MYREF_g1
  • securityTokenValue将存储在JMeter变量
    MYREF_g2

在ResponseData选项卡上有内置的RegExp Tester。您还可以使用查看正则表达式提取器设置了哪些变量

您需要多行正则表达式匹配。你的正则表达式看起来像这样

(?s)securityTokenName=“(.+?)”*?securityTokenValue=“(.+?)”

下面是一个示例测试计划(它使用jmeter插件中的虚拟采样器,如果您没有它们,它将失败)

这篇文章讨论了简单地拥有。*?将匹配多行,但显然不起作用。他不是救世主

详细信息来自jmeter文档


请注意,为了简化示例,我删除了=周围的空格。请适当地更改正则表达式。

我的建议是首先使用第一个正则表达式检查
securityTokenName=“(.*)”
&使用beanshell脚本打印值(使用beanshell后处理器)
log.info(vars.get(“regex_REF”)如果工作正常,则转到second.securityTokenName=“(.*)”不返回任何匹配项。这就是我面临的问题。我不确定Jmeter是否没有看到它,因为它是javascript的一部分?请检查
securityTokenName=“(.*)”
regex中“=”和(.*)之间的空格部分,因为您可能不认为regex中有空格部分。使用regex
securityTokenName“(.*”
)尝试一个通配符测试,如果在输出jmeter正常工作时出现SKtEMgZtO0H8EYHkAZIQ4tcS5bC8jKrD,否则可能会出现另一个问题。没有在jmeter中使用正则表达式提取器,是否还有其他方法可以做到这一点?我知道SoapUI有几种方法。添加var securityTokenName=”(.+?)“建议的reg表达式提取器不会返回任何匹配项。感谢您建议使用调试采样器。不知何故,Jmeter无法识别securityTokenName和securityTokenValue