如何获取,在JMeter Beanshell中分配Span Id值?

时间:2012-12-04 14:51:15

标签: jmeter

我创建了一个名为“状态”的用户自定义变量,默认值为“已启动”。

我收到了一条HTML响应,内容如下:

<SPAN id="ApplicationStatus">&nbsp;Interrupted</SPAN>

我想获取Span Id值并在beanshell采样器中使用,以便在If Controller或Switch Controller中进一步处理。

我使用正则表达式提取器来提取所需的值及其工作原理。

但是当我说vars.get("Status")时总是会返回默认值“已启动”。

有没有办法可以提取所需的值“Interrupted”并将其替换为用户定义的变量“Status”?

2 个答案:

答案 0 :(得分:0)

是的,您可以将#ApplicationStatus的值加到用户自定义变量(UDV)中。

你可以使用正则表达式,但实际上你不应该为这种类型的解析我不会理解为什么。

以下是使用替代方法(更好的解决方案恕我直言)的方法:

String html = "<SPAN id=\"ApplicationStatus\">&nbsp;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采样器记录正则表达式提取器

中接收的值