【发布时间】:2022-01-22 19:50:00
【问题描述】:
我是 Gatling 新手,在这方面有点挣扎。
我有这个来自 HTML 的 JSON 对象:
<div id="DATA--DECL-DATA">{"isCompany":false,"accommodations":[{"id":"00000000031000000067","isChecked":false,"name":"5 JULI 2017","addressLine1":"STRAAT 10 ","addressLine2":"1000 New York","nightsDeclared":0,"schoolNightsDeclared":0,"schoolNightsAttached":0,"taxableNights":0.0,"totalPayment":0.0,"isInProgress":false,"isLate":false,"isPayed":"false","deadline":"2021-12-31","initialAmount":0.0,"remainingAmount":0.0},{"id":"00000000031000006362","isChecked":false,"name":"BELLEVIE","addressLine1":"STRAAT 10 ","addressLine2":"1000 New York","isInProgress":false},{"id":"00000000031000006380","isChecked":false,"name":"BELLEVIE","addressLine1":"STRAAT 10 ","addressLine2":"1000 New York","isInProgress":true},{"id":"00000000031000006390","isChecked":false,"name":"BELLEVIE","addressLine1":"STRAAT 10 ","addressLine2":"1000 New York","isInProgress":true}]}</div>
如果美化了,渲染这个:
{
"isCompany": false,
"accommodations": [
{
"id": "00000000031000000067",
"isChecked": false,
"name": "5 JULI 2017",
"addressLine1": "STRAAT 10 ",
"addressLine2": "1000 New York",
"isInProgress": false
},
{
"id": "00000000031000006362",
"isChecked": false,
"name": "BELLEVIE",
"addressLine1": "STRAAT 10 ",
"addressLine2": "1000 New York"
"isInProgress": false
},
{
"id": "00000000031000006380",
"isChecked": false,
"name": "BELLEVIE",
"addressLine1": "STRAAT 10 ",
"addressLine2": "1000 New York",
"isInProgress": true
},
{
"id": "00000000031000006390",
"isChecked": false,
"name": "BELLEVIE",
"addressLine1": "STRAAT 10 ",
"addressLine2": "1000 New York",
"isInProgress": true
}
]
}
为了从那个 div 中获取这个 JSON 数组并将其保存到 Gatling 中的会话变量中,我写了这个“检查”:
.check(css("div#DATA--DECL-DATA").saveAs("myJsonObj"))
然后在脚本执行后在控制台中打印结果,我写了这个:
.exec { session => println("json = " + session("myJsonObj").as[String]); session }.exitHereIfFailed
这将在控制台中打印出您在上面看到的完整的美化 JSON 数组。
现在,在那个住宿 JSON 数组中,我们可以看到当 "isInProgress" 为 false 时有多个 id。
那么我的问题是,当 "isInProgress" 为假时,如何获取住宿的第一个 id?
所以:如果 "IsInProgress" 为 false => 获取该数组中的第一个住宿 id。
【问题讨论】:
-
您尝试过哪些解决方案,哪些不起作用?
-
我首先尝试使用正则表达式获取该数组中的住宿 id,它起作用了,.check(regex(""""accommodations":[\{"id":"(.*? )"""").saveAs("accommodationId"))。但是,它总是会呈现第一个住宿 id。当“isInProgress”为假时,目标是能够在该 json 数组中获得第一个住宿。因此,每次在表单中提交一个 id 并将“isInProgress”变为“true”时,它将获得一个“isInProgress”为“false”的现有 id。