我想提取一些数据并将其存储为先前采样器响应的JMeter变量。在我的回答中,有许多所谓的属性,它们具有formulaName,definitionId和id。我想通过formulaName找到一个特定的属性(" formulaName":" F1&#34 ;;已定义的是用户定义的变量)并获取它的definitionId和id并将它们存储在一个变量,如attributeF1DefinitionId和attributeF1Id。 在问题的底部可以找到完整的JSON响应,但没有缩短它以更好地描述我的问题。
{
"resultType": "OK",
"messages": null,
"results": {
"data": {
"actionData": {
"actionId": "00000000-0000-0000-0000-000000000000",
"modelId": "00000000-0000-0000-0000-000000000000",
"isNew": false,
"isReadOnly": false,
"includeDisplayObjectsInTabVisibility": true,
"preselectedTabId": "00000000-0000-0000-0000-000000000000",
"elementId": "AM100000001",
"localizedName": "AM100000001Action",
"headerLayout": {
"fitToAvailableWidth": true,
"fillingColumnIndex0Based": 0,
"fitToAvailableHeight": false,
"fillingRowIndex0Based": null,
"attributes": null
"tabs": [
{
"id": "00000000-0000-0000-0000-000000000000",
"formulaName": "TD1",
"name": "Description",
"nameAdditionalInfos": null,
"dynamicLayout": {
"fitToAvailableWidth": false,
"fillingColumnIndex0Based": null,
"fitToAvailableHeight": false,
"fillingRowIndex0Based": null,
"attributes": [
{
"id": "10000000-0000-0000-0000-000000000001",
"name": "Attribute Number 1",
"formulaName": "F1",
"definitionId": "10000000-0000-0000-0000-000000000001",
"isHidden": false
},
{
"id": "20000000-0000-0000-0000-000000000002",
"name": "Attribute Number 2",
"formulaName": "F2",
"definitionId": "20000000-0000-0000-0000-000000000002",
"isHidden": false
},
......
我们赞赏任何方法,我可以在下一步中自动完成此提取。我真正想要做的是提取几乎所有属性的definitionIds和id(通过其formulaName找到)并为它们生成使用定义的变量。公式名称保存在"用户定义的变量" - Set和我找到了一种用groovy迭代它的方法。
我的方法是在请求采样器中使用JSR223 - groovy后处理器,它加载数据并具有上面的响应。 但我卡住了,过滤了我特定的formulaName。
import groovy.json.*;
import org.apache.jmeter.threads.JMeterVariables;
def response = prev.getResponseDataAsString();
def json = new JsonSlurper().parseText(response)
def allAttributes = json.results.data.actionData.tabs.dynamicLayout.attributes;
完成JSON响应:
{
"resultType": "OK",
"messages": null,
"results": {
"data": {
"actionData": {
"actionId": "627292b8-5854-4413-bd3c-7bc4a683f58d",
"modelId": "da5433d1-74f9-43e4-8a98-92c8eb9dcead",
"isReadOnly": false,
"preselectedTabId": "14ff3d76-532d-47a6-bb85-5e48b0e7cab9",
"elementId": "AM200000001",
"localizedName": "AM200000001Action",
"tabs": [
{
"id": "14ff3d76-532d-47a6-bb85-5e48b0e7cab9",
"formulaName": "TD2",
"name": "Description",
"clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_14ff3d76-532d-47a6-bb85-5e48b0e7cab9",
"nameAdditionalInfos": null,
"dynamicLayout": {
"fitToAvailableWidth": false,
"fillingColumnIndex0Based": null,
"fitToAvailableHeight": false,
"fillingRowIndex0Based": null,
"attributes": [
{
"id": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b",
"name": "F1 attribute name",
"formulaName": "F1",
"definitionId": "1dc065a6-f071-4547-835b-603aff165754",
"isHidden": false,
"isReadOnly": false,
"isMandatory": true,
"label": {
"settings": {
"bold": false,
"underline": false,
"color": "#000000",
"fontSize": null,
"allowTextWrap": true
},
"text": "F1 attribute name",
"colonPosition": 6,
"referedClientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_Value",
"clientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_Label",
"layout": {
"positionHorizontal": 3,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeLabelDefault",
"parameters": null
}
},
"mandatorySign": {
"clientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_MandatorySign",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeMandatorySignDefault",
"parameters": null
}
},
"documentation": {
"documentations": [
{
"id": "a2a4fb71-9662-44e3-9279-b4692f9ca8f1",
"name": "Attribute documentation",
"type": 2
}
],
"clientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_Documentation",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
"parameters": null
}
},
"value": {
"width": 570,
"options": [
{
"id": "402e48f4-a313-4869-9355-91b120a93849",
"text": "Planned",
"cascadingParentItemIds": []
},
{
"id": "f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0",
"text": "Implemented",
"cascadingParentItemIds": []
}
],
"cascadingParentAttributeId": null,
"allowsNoValue": true,
"cascadingParentInitialValue": null,
"value": "402e48f4-a313-4869-9355-91b120a93849",
"attributeType": "ActionAttributeListSingleEntity",
"isDirty": false,
"clientId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b_Value",
"layout": {
"positionHorizontal": 1,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeSingleSelectListDefault",
"parameters": null
}
},
"dependencies": []
},
{
"id": "c75171ee-bd2f-4396-828e-0f909ae538ed",
"name": "F2 attribute name",
"formulaName": "F2",
"definitionId": "886e8d59-deb5-4725-8080-9033feacb6d3",
"isHidden": false,
"isReadOnly": false,
"isMandatory": true,
"label": {
"settings": {
"bold": false,
"underline": false,
"color": "#000000",
"fontSize": null,
"allowTextWrap": true
},
"text": "F2 attribute name",
"colonPosition": 6,
"referedClientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_Value",
"clientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_Label",
"layout": {
"positionHorizontal": 3,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeLabelDefault",
"parameters": null
}
},
"mandatorySign": {
"clientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_MandatorySign",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeMandatorySignDefault",
"parameters": null
}
},
"documentation": {
"documentations": [
{
"id": "734d1c1e-0b35-46f3-9580-7f0a31a8201b",
"name": "Attribute documentation",
"type": 2
}
],
"clientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_Documentation",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
"parameters": null
}
},
"value": {
"width": 570,
"options": [
{
"id": "3231d235-36e3-497a-b244-f1ccd3e4a585",
"text": "None",
"cascadingParentItemIds": [
"402e48f4-a313-4869-9355-91b120a93849",
"f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
]
},
{
"id": "1b2e9695-0945-4724-85cb-70b4d55bcaf3",
"text": "Weak",
"cascadingParentItemIds": [
"f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
]
},
{
"id": "b89239d8-2bad-48ad-b3b9-f1426b0b5b8c",
"text": "Noticeable",
"cascadingParentItemIds": [
"f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
]
},
{
"id": "8bc090f5-17c1-4040-9a16-2d4a9b609c94",
"text": "Strong",
"cascadingParentItemIds": [
"f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
]
},
{
"id": "4cdee469-9524-4dde-8e24-a878ea8d2138",
"text": "Very strong",
"cascadingParentItemIds": [
"f68bc4d8-ef25-4f02-acf4-bc20cbe45ab0"
]
}
],
"cascadingParentAttributeId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b",
"allowsNoValue": true,
"cascadingParentInitialValue": [
"402e48f4-a313-4869-9355-91b120a93849"
],
"value": "3231d235-36e3-497a-b244-f1ccd3e4a585",
"attributeType": "ActionAttributeListSingleEntity",
"isDirty": false,
"clientId": "c75171ee-bd2f-4396-828e-0f909ae538ed_Value",
"layout": {
"positionHorizontal": 1,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeSingleSelectListDefault",
"parameters": null
}
},
"dependencies": [
{
"requiresFullUpdate": false,
"sourceAttributeId": "ca25c1bc-5528-4730-8cc5-3a3c2ca4428b",
"targetAttributeId": "c75171ee-bd2f-4396-828e-0f909ae538ed"
}
]
},
{
"id": "16f18829-e905-498a-8c28-2d29fc2e7b8b",
"name": "F3 attribute name",
"formulaName": "F3",
"definitionId": "9aef853b-f4c3-440d-9c32-6d9a13835033",
"isHidden": false,
"isReadOnly": false,
"isMandatory": true,
"label": {
"settings": {
"bold": false,
"underline": false,
"color": "#000000",
"fontSize": null,
"allowTextWrap": true
},
"text": "F3 attribute name",
"colonPosition": 6,
"referedClientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_Value",
"clientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_Label",
"layout": {
"positionHorizontal": 3,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeLabelDefault",
"parameters": null
}
},
"mandatorySign": {
"clientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_MandatorySign",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeMandatorySignDefault",
"parameters": null
}
},
"documentation": {
"documentations": [
{
"id": "096f02b4-2570-47b2-a346-c27c5102ceda",
"name": "Attribute documentation",
"type": 2
}
],
"clientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_Documentation",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
"parameters": null
}
},
"value": {
"width": 570,
"rows": 4,
"maxLength": 30000,
"searchInfo": null,
"value": "Textattribute value was changed! ",
"attributeType": "ActionAttributeTextEntity",
"isDirty": false,
"clientId": "16f18829-e905-498a-8c28-2d29fc2e7b8b_Value",
"layout": {
"positionHorizontal": 1,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeTextboxDefault",
"parameters": null
}
},
"dependencies": []
}
],
"displayObjects": []
}
},
{
"id": "e72e24ab-0ebd-4dd8-bf7b-4586dbc50da4",
"formulaName": "TD1",
"name": "Remarks",
"clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_e72e24ab-0ebd-4dd8-bf7b-4586dbc50da4",
"nameAdditionalInfos": null,
"dynamicLayout": {
"fitToAvailableWidth": false,
"fillingColumnIndex0Based": null,
"fitToAvailableHeight": false,
"fillingRowIndex0Based": null,
"attributes": [
{
"id": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987",
"name": "Remark attribute 1",
"formulaName": "R1",
"definitionId": "9709e796-3be7-49e5-a638-ed9de027b680",
"isHidden": false,
"isReadOnly": true,
"isMandatory": false,
"label": {
"settings": {
"bold": false,
"underline": false,
"color": "#000000",
"fontSize": null,
"allowTextWrap": true
},
"text": "Remark attribute 1",
"colonPosition": 6,
"referedClientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_Value",
"clientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_Label",
"layout": {
"positionHorizontal": 3,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeLabelDefault",
"parameters": null
}
},
"mandatorySign": {
"clientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_MandatorySign",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeMandatorySignDefault",
"parameters": null
}
},
"documentation": {
"documentations": [
{
"id": "d31bb13b-1f12-4f43-8ec4-d91fc405b3ae",
"name": "Attribute documentation",
"type": 2
}
],
"clientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_Documentation",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
"parameters": null
}
},
"value": {
"width": 570,
"rows": 4,
"maxLength": 30000,
"searchInfo": null,
"value": "",
"attributeType": "ActionAttributeTextEntity",
"isDirty": false,
"clientId": "1ef375a3-fc5b-47dc-8b32-4a106cfa2987_Value",
"layout": {
"positionHorizontal": 1,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeTextboxDefault",
"parameters": null
}
},
"dependencies": []
},
{
"id": "379d5451-e5af-42f8-b8b8-52b7f0953261",
"name": "Remark attribute 2",
"formulaName": "R2",
"definitionId": "ba03b62d-bcc1-40c7-9df1-e976151821a2",
"isHidden": false,
"isReadOnly": true,
"isMandatory": false,
"label": {
"settings": {
"bold": false,
"underline": false,
"color": "#000000",
"fontSize": null,
"allowTextWrap": true
},
"text": "Remark attribute 1",
"colonPosition": 6,
"referedClientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_Value",
"clientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_Label",
"layout": {
"positionHorizontal": 3,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeLabelDefault",
"parameters": null
}
},
"mandatorySign": {
"clientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_MandatorySign",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeMandatorySignDefault",
"parameters": null
}
},
"documentation": {
"documentations": [
{
"id": "129e84fe-0d76-4f8b-b5aa-e80e452998bd",
"name": "Attribute documentation",
"type": 2
}
],
"clientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_Documentation",
"layout": {
"positionHorizontal": 2,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeDocumentationSignDefault",
"parameters": null
}
},
"value": {
"width": 570,
"rows": 4,
"maxLength": 30000,
"searchInfo": null,
"value": "",
"attributeType": "ActionAttributeTextEntity",
"isDirty": false,
"clientId": "379d5451-e5af-42f8-b8b8-52b7f0953261_Value",
"layout": {
"positionHorizontal": 1,
"positionVertical": 1
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeTextboxDefault",
"parameters": null
}
},
"dependencies": []
}
],
"displayObjects": []
}
}
],
"footerLayout": {
"fitToAvailableWidth": true,
"fillingColumnIndex0Based": 2,
"fitToAvailableHeight": false,
"fillingRowIndex0Based": null,
"attributes": [
{
"id": "AuditComment",
"name": null,
"formulaName": "AuditComment",
"definitionId": "AuditComment",
"isHidden": false,
"isReadOnly": false,
"isMandatory": false,
"label": {
"settings": {
"bold": false,
"underline": false,
"color": "#000000",
"fontSize": null,
"allowTextWrap": false
},
"text": "Audit-Trail Comment",
"colonPosition": 7,
"referedClientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_EndDateValue",
"clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_EndDateLabel",
"layout": {
"positionHorizontal": 3,
"positionVertical": 2
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeLabelDefault",
"parameters": null
}
},
"mandatorySign": {
"clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_EndDateMandatorySign",
"layout": {
"positionHorizontal": 2,
"positionVertical": 2
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeMandatorySignDefault",
"parameters": null
}
},
"documentation": null,
"value": {
"width": null,
"rows": 1,
"maxLength": null,
"searchInfo": null,
"value": "",
"attributeType": "ActionAttributeTextEntity",
"isDirty": false,
"clientId": "627292b8-5854-4413-bd3c-7bc4a683f58d_EndDateValue",
"layout": {
"positionHorizontal": 1,
"positionVertical": 2
},
"displayWidget": {
"identifier": "ActionDetailDisplayTypeTextboxDefault",
"parameters": null
}
},
"dependencies": null
}
],
"displayObjects": null
}
},
"linkedActions": null,
"documentations": null,
"approvals": null
}
}
}
答案 0 :(得分:0)
我相信你可以使用JSON Extractor轻松完成,例如你可以获得id
属性" formulaName"是" F1"使用以下简单的JSON路径查询:
$..[?(@.formulaName == 'F1')].id
类似于definitionId
,只需更改上面的JSON Path查询以匹配它:
$..[?(@.formulaName == 'F1')].definitionId
参考文献:
Groovy方法:
import groovy.json.JsonSlurper
def response = prev.getResponseDataAsString()
def json = new JsonSlurper().parseText(response)
def allAttributes = json.results.data.actionData.headerLayout.tabs[0].dynamicLayout.attributes
allAttributes.each { attribute ->
attribute.each { k, v -> log.info("${k}:${v}") }
}
答案 1 :(得分:0)
getJsonResponseString()
返回一个字符串,其中包含问题中指定的json响应数据(“完整的json响应”),下面的groovy代码:
import groovy.json.*;
def data = getJsonResponseString()
def json = new JsonSlurper().parseText(data)
def attribute = json.results.data.actionData.tabs.dynamicLayout.attributes.first().find { attribute ->
attribute.formulaName == "F1"
}
if (!attribute) {
println "No attribute with formulaName F1 found!"
} else {
println "Results for 'F1': "
println " definitionId: ${attribute.definitionId}"
println " id: ${attribute.id}"
}
打印:
Results for 'F1':
definitionId: 1dc065a6-f071-4547-835b-603aff165754
id: ca25c1bc-5528-4730-8cc5-3a3c2ca4428b
上面代码中的json
对象应该等同于示例代码中的json
对象。