我创建了一个名为“状态”的用户自定义变量,默认值为“已启动”。
我收到了一条HTML响应,内容如下:
<SPAN id="ApplicationStatus"> Interrupted</SPAN>
我想获取Span Id值并在beanshell采样器中使用,以便在If Controller或Switch Controller中进一步处理。
我使用正则表达式提取器来提取所需的值及其工作原理。
但是当我说vars.get("Status")
时总是会返回默认值“已启动”。
有没有办法可以提取所需的值“Interrupted”并将其替换为用户定义的变量“Status”?
答案 0 :(得分:0)
是的,您可以将#ApplicationStatus
的值加到用户自定义变量(UDV
)中。
你可以使用正则表达式,但实际上你不应该为这种类型的解析我不会理解为什么。
以下是使用替代方法(更好的解决方案恕我直言)的方法:
String html = "<SPAN id=\"ApplicationStatus\"> Interrupted</SPAN>";
Document doc = Jsoup.parse(html);
String value = doc.select("#ApplicationStatus").first().text();
//Put value in UDV Status
vars.put("Status", value);
您可以将此添加到进行此类解析的采样器,即Beanshell采样器,这里是导入(高于此代码):
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
请注意,此代码依赖于Jsoup,因此您需要下载jsoup jar并将其放在$JMETER_HOME/lib
目录中。
希望这能为你的问题提供一些启示。
<强>更新强>
如果你想避免Java,我写了一个小的jmeter后处理器组件,它从HTML元素中提取文本值。看看:
https://github.com/c0mrade/Html-Extractor
如果您从上面的页面查看如何安装后处理器的步骤,您将按如下方式使用它:
右键单击您的采样器。添加后处理器 - &gt; Html Extractor,在jquery选择器字段中写#ApplicationStatus
并将结果存储在您选择的变量(Status
)中。在此之后添加Debug Sampler,如果在Debug sampler中有变量Status
,其值为Html Extractor正在运行!你做完了!
答案 1 :(得分:-1)
我无法重现您的问题。
这是我的计划:
- User defined variables with variable Status
- Thread Group
- HTTP Request
- Regular expression extractor with reference name = Status
- Beanshell Sampler that logs Status variable
Beanshell采样器记录正则表达式提取器
中接收的值