我有一个动态的响应值,但它会不断改变位置。我该如何捕捉它。 例如:第一个迭代值是第二个位置 第2次迭代值是第4位 第三次迭代的值是第一位置...
请问有人可以指导我如何使用正则表达式提取器或任何其他提取器捕获此值。
答案 0 :(得分:0)
也许正则表达式提取器不是最佳选择especially when it comes to HTML response type,所以请确保使用合适的Post-Processor,即
继续在您的问题中包括(至少是部分)答复,并指出您要提取的值,以便我们提出最有效的方法。
答案 1 :(得分:-1)
从JMeter 3.0开始,使用JSON变量提取器从JSON响应中提取数据要容易得多。 JSON是一种非常简单的数据格式,几年前已经取代了XML。
越来越多的REST API和服务器使用JSON作为其主要数据交换格式。在这里,我们将使用JMeter解析JSON响应。 假设我们有一个JSON响应,如下所示:
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
要使用JMeter解析上述JSON,我们需要在测试计划中添加JSON Extractor。
右键单击测试计划–>添加–>后处理器–> JSON提取器
jmeter json提取器解析器
现在,我们应该看到以下视图:
json提取器jmeter
在“ JSON路径表达式”字段中,我们可以插入JSON路径以解析JSON响应
以下是一些示例Json Path表达式,可用于从上面公开的Json文档中提取数据:
JSONPATH RESULT
$.store.book[*].author The authors of all books
$..author All authors
$.store.* All things, both books and bicycles
$.store..price The price of everything
$..book[0,1] The first two books
$..book[:2] All books from index 0 (inclusive) until index 2 (exclusive)
$..book[2:] Book number two from tail
$..book[?(@.isbn)] All books with an ISBN number
$.store.book[?(@.price < 10)] All books in store cheaper than 10
$..book[?(@.price <= $[‘expensive’])] All books in store that are not “expensive”
$..book[?(@.author =~ /.*REES/i)] All books matching regex (ignore case)
$..* Give me every thing
$..book.length() The number of books