来自Subsample的JMeter Mail Reader采样器提取

时间:2017-04-24 11:54:55

标签: regex email jmeter

我试图从Regular Expression Extractor的子子样本中Mail Reader Sampler提取用户ID,但没有成功。

我不明白为什么Regular Expression Extractor无法检查Mail Reader Sampler的子样本。我是如何提取用户ID的?

我的邮件阅读器采样器 Mail Reader Sampler

我对Mail Reader Sampler的回应。子子样本实际上包含电子邮件为html。 Response of the Mail Reader Sampler

我的正则表达式提取器 Regular Expression Extractor

电子邮件包含这样的部分,其中包含包含用户ID的激活链接:

<span class="link-ref"><a href="https://domain.local:443/account/activate?userId=La21BhmS&token=FefcOrcd7g">https://domain.local:443/account/activate?userId=La21BhmS&token=FefcOrcd7g</a></span>

1 个答案:

答案 0 :(得分:2)

正则表达式提取器不会比第一级子样本更深入(它只会查看Message 1),我建议使用JSR223 PostProcessor迭代子结果并将结果附加到主采样器,因此您可以使用正则表达式提取器。

  1. 将JSR223 PostProcessor作为Mail Reader Sampler的子项添加
  2. 确保将JSR223后置处理器放在正则表达式提取器之前
  3. 确保您在&#34;语言&#34;中有groovy;下拉
  4. 将以下代码放入JSR223 PostProcessor&#34; Script&#34;区域

    StringBuilder aggregateResult = new StringBuilder()
    prev.getSubResults().each {
        aggregateResult.append(it.getResponseDataAsString())
        it.getSubResults().each {
            aggregateResult.append(it.getResponseDataAsString())
            it.getSubResults().each {
                aggregateResult.append(it.getResponseDataAsString())        
            }   
        }
    }
    prev.setResponseData(aggregateResult.toString().getBytes())
    

    上面的代码会将子采样器的结果追加到第二级到&#34; Mail Reader Sampler&#34;响应数据和正则表达式将起作用。有关在JMeter中使用Groovy脚本的更多信息,请参阅Groovy Is the New Black文章。