用于提取 URL 的 JSR223 后处理器

问题描述 投票:0回答:1

我正在使用这个 groovy 脚本来获取动态值以从 URL 进行关联。

// Retrieve the URL as a string from the previous sampler response
def urlString = prev.getUrlAsString()
 
// Define the regular expression pattern to capture pzPostData parameter
def regexPattern = /pzPostData=(-?\d+)/
 
// Match the pattern against the URL string
def matcher = urlString =~ regexPattern
 
// Check if a match is found
if (matcher.find()) {
    // Extract and store the captured group (section)
    def PostData = matcher.group(1)
    log.info("Extracted PostData: $PostData")
} else {
    log.info("No match found for the pattern in URL: $urlString")
}

网址沿着“www.random.com/web/STANDARD?!PostData=123456”的行

我只想要PostData之后的值。

日志显示它已被拾取;但是,当尝试将其作为 ${PostData} 之类的内容放入我的一个请求中时,它不会被拾取并添加到另一个 URL 请求中。

不知道该做什么以及哪里出了问题。如果此信息有帮助,则该请求在发出该请求时有两个子请求。这是因为它是 303 并使用我试图选择的 URL 重定向到新页面以添加到另一个请求。

让我知道是否有更好的方法来做到这一点

groovy jmeter performance-testing jmeter-5.0
1个回答
0
投票

如果存在重定向,您需要从子结果中提取URL,而不是从主采样器中提取。

类似于正则表达式提取器的“应用到”字段:

所以我认为你需要改变这一行:

def urlString = prev.getUrlAsString()

对于这个:

def urlString = prev.getSubResults().find { subResult -> subResult.getUrlAsString().contains("PostData") }.getUrlAsString()

有关 JMeter 中 Groovy 脚本编写的更多信息:Apache Groovy:Groovy 的用途是什么?

© www.soinside.com 2019 - 2024. All rights reserved.