我正在使用这个 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 重定向到新页面以添加到另一个请求。
让我知道是否有更好的方法来做到这一点
如果存在重定向,您需要从子结果中提取URL,而不是从主采样器中提取。
类似于正则表达式提取器的“应用到”字段:
所以我认为你需要改变这一行:
def urlString = prev.getUrlAsString()
对于这个:
def urlString = prev.getSubResults().find { subResult -> subResult.getUrlAsString().contains("PostData") }.getUrlAsString()
有关 JMeter 中 Groovy 脚本编写的更多信息:Apache Groovy:Groovy 的用途是什么?