1

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

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

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

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

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

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

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

4

2 回答 2

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

如果您从上面的页面查看如何安装后处理器的步骤,您将按如下方式使用它:

右键单击您的采样器。添加 Post Processors -> Html Extractor ,在 jquery 选择器字段中写入#ApplicationStatus结果并将结果存储在您选择的变量中 ( Status)。在此添加调试采样器之后,如果在您的调试采样器中存在Status值为 Html Extractor 的变量正在工作!你完成了!

于 2012-12-04T19:46:14.400 回答
-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 采样器记录在正则表达式提取器中收到的值

于 2012-12-04T19:26:54.997 回答