JMeter中配备动态正则表达式的正则表达式提取器

cidc1ykv  于 2022-11-09  发布在  其他
关注(0)|答案(8)|浏览(272)

有没有办法设置一个正则表达式提取器与正则表达式,其中包括动态变量(例如,${var})。
提出这个问题的原因是因为我的测试计划的一部分是从html响应中获取某个用户帐户的UserID,因此随后Jmeter将继续以该UserID作为参考来执行它的业务。

<.*id=(/d+).*value="johndoe"

但是我希望测试计划足够灵活,能够处理多个线程,每个线程代表一个唯一的用户,因此正则表达式必须如下所示

<.*id=(/d+).*value="${USERNAME}"

如果有一两条建议可以实现,我们会很感激。如果不能实现,也可以有其他的方法
谢谢

57hvy0tb

57hvy0tb1#

您好,
作为一个即将成为Jmeter爱好者的人,你会发现这种情况经常发生。你只需要转义正则表达式中的特殊字符。美元符号在PERL正则表达式中有特殊的含义,所以我们需要告诉正则表达式使用文字$:

<.*id=(/d+).*value="\${USERNAME}"

还有,id部分有点贪婪。我会推荐:

<.*id=(/d+?) value="${USERNAME}"
pcww981p

pcww981p2#

我也遇到过类似的问题,简单地转义$字符对我来说不起作用。
相反,我不得不使用__V()函数。
因此,在此示例中,正则表达式将如下所示:

<.*id=(/d+).*value="${__V(${USERNAME})}"

我不需要转义$字符。我使用的是JMeter2.9

tyky79it

tyky79it3#

在Apache JMeter 2.9中,在正则表达式中包含变量值${MYVARIABLE}的正确表达式为:

__V(${MYVARIABLE})

这应该放在正则表达式中所需的位置。
工作正常!!!

gv8xihay

gv8xihay4#

对我来说,不需要转义任何内容(在Jmeter变量语法中)。
在“正则表达式”字段中只设置变量(包含整个正则表达式,可能是动态生成的),如${regex},也可以。

guicsvcw

guicsvcw5#

这个问题也让我很恼火。对我来说唯一有效的解决方案是添加一个BeanShell采样器,代码如下:

字符串S =“blah-blah-blah...\\d...${我的变量}... blah-blah-blah”;
变量put(“正则表达式”,S);

然后在正则表达式提取器a中仅使用了以下内容:

${正则表达式}

注意,由于某些原因,\d需要用THREE反斜杠... facepalm.jpg 屏蔽

2q5ifsrm

2q5ifsrm6#

对于Jmeter 3.1,我必须使用${__V(${MYVAR})}语法,如@spark和@卡洛斯AG所述

vfh0ocws

vfh0ocws7#

我做这件事的唯一方法是,首先创建一个字符串,连接变量和模式的其余部分,并将其保存到一个变量中(这在后处理器中),然后将其放入正则表达式提取器中。

yxyvkwin

yxyvkwin8#

我在jMeter 5.5上描述了非常类似的问题-快照3a 74 a92,工作解决方案如下:jMeter Regular Expression Extractor with use of variable in regexp

相关问题