有没有办法设置一个正则表达式提取器与正则表达式,其中包括动态变量(例如,${var})。
提出这个问题的原因是因为我的测试计划的一部分是从html响应中获取某个用户帐户的UserID,因此随后Jmeter将继续以该UserID作为参考来执行它的业务。
<.*id=(/d+).*value="johndoe"
但是我希望测试计划足够灵活,能够处理多个线程,每个线程代表一个唯一的用户,因此正则表达式必须如下所示
<.*id=(/d+).*value="${USERNAME}"
如果有一两条建议可以实现,我们会很感激。如果不能实现,也可以有其他的方法
谢谢
8条答案
按热度按时间57hvy0tb1#
您好,
作为一个即将成为Jmeter爱好者的人,你会发现这种情况经常发生。你只需要转义正则表达式中的特殊字符。美元符号在PERL正则表达式中有特殊的含义,所以我们需要告诉正则表达式使用文字$:
还有,id部分有点贪婪。我会推荐:
pcww981p2#
我也遇到过类似的问题,简单地转义$字符对我来说不起作用。
相反,我不得不使用__V()函数。
因此,在此示例中,正则表达式将如下所示:
我不需要转义$字符。我使用的是JMeter2.9
tyky79it3#
在Apache JMeter 2.9中,在正则表达式中包含变量值${MYVARIABLE}的正确表达式为:
这应该放在正则表达式中所需的位置。
工作正常!!!
gv8xihay4#
对我来说,不需要转义任何内容(在Jmeter变量语法中)。
在“正则表达式”字段中只设置变量(包含整个正则表达式,可能是动态生成的),如${regex},也可以。
guicsvcw5#
这个问题也让我很恼火。对我来说唯一有效的解决方案是添加一个BeanShell采样器,代码如下:
字符串S =“blah-blah-blah...\\d...${我的变量}... blah-blah-blah”;
变量put(“正则表达式”,S);
然后在正则表达式提取器a中仅使用了以下内容:
${正则表达式}
注意,由于某些原因,\d需要用THREE反斜杠... facepalm.jpg 屏蔽
2q5ifsrm6#
对于Jmeter 3.1,我必须使用${__V(${MYVAR})}语法,如@spark和@卡洛斯AG所述
vfh0ocws7#
我做这件事的唯一方法是,首先创建一个字符串,连接变量和模式的其余部分,并将其保存到一个变量中(这在后处理器中),然后将其放入正则表达式提取器中。
yxyvkwin8#
我在jMeter 5.5上描述了非常类似的问题-快照3a 74 a92,工作解决方案如下:jMeter Regular Expression Extractor with use of variable in regexp