使用正则表达式提取器从jmeter响应中提取字符串

时间:2013-01-17 21:06:09

标签: regex jmeter

我正在尝试从下面的html响应代码中提取字符串(201& 202)。 到目前为止,我已经尝试了以下正则表达式

punumber=(.+)

但问题是页面上有punumber的许多实例,并为我提供了我不需要的东西。
我需要的字符串在<h3 class="content-title">

那么有人可以帮我写一个正则表达式来提取h3类中的单数吗?

<h3 class="content-title">
<!--  change when this is completed -->
    <a href="/container/recentIssue.jsp?punumber=201">
    Title 1
    </a>
</h3>

<h3 class="content-title">
<!--  change when this is completed -->
    <a href="/container/mostRecentIssue.jsp?punumber=202">
    Title 1
    </a>                                    
</h3>

3 个答案:

答案 0 :(得分:5)

这对我有用:

Reference Name : test
Regexp : punumber=([^"]+?)"

Template : $1$

Match No : -1

(这将获得所有值)     NV_punumber

使用-1,JMeter将创建:

  • $ {test_1} =&gt; 201

  • $ {test_2} =&gt; 202

答案 1 :(得分:2)

这是适用于我的正则表达式:

punumber=(\d+)

如果你正在解析html,你应该考虑使用除了正则表达式以外的其他东西来提取像jsoup这样的信息。

无论如何,这里是附带虚拟采样器(带有正则表达式后处理器)的jmeter测试文件,用于模拟您的案例和调试采样器,以获得您想要的结果。

http://pastebin.com/Uti8Pv9E

答案 2 :(得分:0)

在这种情况下,您可以将XPath Extractor与结构化查询(从href标记内的ONLY实例中获取punumber所有<h3>值)与提取然后{来自ForEach Controller循环中punumber的值{1}}。

. . .
YOUR HTTP REQUEST
    XPath Extractor
    Use Tidy = true
    Reference Name = punum
    XPath Query = //h3[@class="content-title"]/a[text()="Title 1"]/@href
    Default value = NOT_FOUND
ForEach Controller
Input variable prefix = punum
Output variable name = pnum
Add "_" before number = true
    User Parameters
    cnt = ${__counter(FALSE,)}
    Regular Expression Extractor
    Apply to = Jmeter Variable = pnum
    Reference Name = punumber_${cnt}
    Regular Expression = punumber=(\d+)
    Template = $1$
    Match No. = 1
    Default value = NOT_FOUND
    ...
. . .
  1. XPath Extractor会为href标记下的所有hrefs个项提供<a>个值<h3>punum_1,...,{{1 vars。
  2. Foreach Controller一个接一个punum_2 var,将其称为punum_N,适用于RegEx Extractor以获取punum_X值,并将提取的值存储为pnum,{ {1}},...,punumber(使用用户参数中定义的计数器并逐步递增)。
  3. 注意:由于此处XPath Extractor用于解析HTML(而非XML)响应,请确保使用Tidy(容错解析器)选项已检查(在XPath Extractor's control panel中)。

    此处提供相同的测试计划:http://db.tt/dnACZtGL(我已经使用了@ ant的答案,谢谢他)。